C# 按特定条件连接两个复杂SQL查询的结果
有两个查询,下面是一个案例中的查询和结果 在第一个查询结果中,5行,从南到北,有5辆半卡车,第7行有22辆卡车。 在第二次查询中,有两种对象类型。如果我们考虑第四行,该行说,<强>从南行到北行,有3辆半卡车和3辆卡车< /强> 我们需要做的是,从第二个结果得到3个半卡车,它们将与第一个查询的第五行相加。因此,半卡车总数将为8辆,同样,卡车总数将为25辆(第7排) 此外,如果没有公共行,则该行将作为新行添加到结果中 1st:C# 按特定条件连接两个复杂SQL查询的结果,c#,sql,sql-server,C#,Sql,Sql Server,有两个查询,下面是一个案例中的查询和结果 在第一个查询结果中,5行,从南到北,有5辆半卡车,第7行有22辆卡车。 在第二次查询中,有两种对象类型。如果我们考虑第四行,该行说,从南行到北行,有3辆半卡车和3辆卡车< /强> 我们需要做的是,从第二个结果得到3个半卡车,它们将与第一个查询的第五行相加。因此,半卡车总数将为8辆,同样,卡车总数将为25辆(第7排) 此外,如果没有公共行,则该行将作为新行添加到结果中 1st: select count(v.ObjectType) o,
select
count(v.ObjectType) o,
v.ObjectType, v.EnterDirection, v.Direction
from
validobjects v
where
processinfoid = 1
and Isactive = 1
and v.ObjectType <> 'None'
and (v.EnterDirection = 'SouthBound' OR
v.EnterDirection = 'EastBound' OR
v.EnterDirection = 'NorthBound' OR
v.EnterDirection = 'WestBound' OR
v.EnterDirection = 'SouthEastBound' OR
v.EnterDirection = 'SouthWestBound' OR
v.EnterDirection = 'NorthEastBound' OR
v.EnterDirection = 'NorthWestBound')
group by
v.ObjectType, v.EnterDirection, v.Direction
select
count(v.objecttype1) o1,
count(v.ObjectType2) o2,
v.ObjectType1, v.ObjectType2,
v.EnterDirection, v.Direction
from
ValidObjects v
where
v.ValidObjectID in (select ValidObjectID
from validobjects v
where processinfoid = 1
and Isactive = 1
and ObjectType = 'None' )
group by
v.ObjectType1, v.ObjectType2, v.EnterDirection, v.Direction
结果
试试这个
SELECT
* -- Your operation
FROM
(
SELECT * FROM FirstQuery
) FQ LEFT JOIN
(
SELECT * FROM SecondQuery
) SQS ON FQ.ObjectType = SQS.ObjectType1 AND
FQ.EnterDirection = SQS.EnterDirection AND
FQ.Direction = SQS.Direction -- SemiTruck
LEFT JOIN
(
SELECT * FROM SecondQuery
) SQT ON
FQ.ObjectType = SQT.ObjectType2 AND
FQ.EnterDirection = SQT.EnterDirection AND
FQ.Direction = SQT.Direction -- Truck
只需
左连接
两个查询?