您能否帮我组合以下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
答案 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