SQL Server Query比较2个select语句数据

时间:2016-06-23 01:03:48

标签: sql sql-server

您能否帮我组合以下2个查询。结果应如attached image.

所示

我想比较两个查询之间的平衡,并在州平衡低于城市余额时标记余额。

 select CT_ID,  sum(balance) as StateBalance
from tblApp
where StateJurisdiction='New york'
group by CT_ID
order by CT_ID

select CT_ID,  sum(balance) as CityBalance
from tblApp
where StateJurisdiction in ('BRONX','BROOKLYN')
group by CT_ID
order by CT_ID

2 个答案:

答案 0 :(得分:2)

使用条件聚合:

SELECT
    CT_ID,
    StateBalance = SUM(CASE WHEN StateJurisdiction = 'New York' THEN balance ELSE 0 END),
    CityBalance  = SUM(CASE WHEN StateJurisdiction IN('BRONX','BROOKLYN') THEN balance ELSE 0 END),
    Flag =
        CASE
            WHEN
                SUM(CASE WHEN StateJurisdiction = 'New York' THEN balance ELSE 0 END) <
                SUM(CASE WHEN StateJurisdiction IN('BRONX','BROOKLYN') THEN balance ELSE 0 END)
            THEN 'Yes'
            ELSE
                ''
        END
FROM tblApp
WHERE 
    StateJurisdiction IN('BRONX','BROOKLYN', 'New York')
GROUP BY CT_ID
ORDER BY CT_ID

答案 1 :(得分:0)

您可以在两个查询之间执行简单的INNER JOIN

SELECT a.CT_ID, StateBalance, CityBalance,
    ( CASE WHEN StateBalance < CityBalance THEN 'Yes' ELSE 'No' END ) AS Flag
FROM
    ( select CT_ID,  sum(balance) as StateBalance
    from tblApp
    where StateJurisdiction='New york'
    group by CT_ID
    order by CT_ID ) AS a
INNER JOIN
    ( select CT_ID, sum(balance) as CityBalance
    from tblApp
    where StateJurisdiction in ('BRONX','BROOKLYN')
    group by CT_ID
    order by CT_ID ) AS b
ON a.CT_ID = b.CT_ID