Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按特定条件连接两个复杂SQL查询的结果_C#_Sql_Sql Server - Fatal编程技术网

C# 按特定条件连接两个复杂SQL查询的结果

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,

有两个查询,下面是一个案例中的查询和结果

在第一个查询结果中,5行,从南到北,有5辆半卡车,第7行有22辆卡车。

在第二次查询中,有两种对象类型。如果我们考虑第四行,该行说,<强>从南行到北行,有3辆半卡车和3辆卡车< /强>

我们需要做的是,从第二个结果得到3个半卡车,它们将与第一个查询的第五行相加。因此,半卡车总数将为8辆,同样,卡车总数将为25辆(第7排)

此外,如果没有公共行,则该行将作为新行添加到结果中

1st:

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

只需
左连接
两个查询?