我有这张桌子
Room Papers Pens
1 30 30
3 10 10
4 15 15
4 35 25
3 25 5
2 15 45
2 5 15
4 7 8
4 11 9
4 12 11
1 8 8
我需要获取房间2,4的SUM(Papers),我知道如何获取(总计100),但是我还需要在此查询中也获取房间2,4 BUT的SUM(Pens)以获得每个房间的最高价值。在此表中,这将是2号房间的值45和4号房间的值25,并且SUM必须为70。
我使用了此代码,但是对于Pens值,它当然不能正常工作...
SELECT SUM(Papers) AS Papers, SUM(DISTINCT Pens) AS Pens FROM MyTable
WHERE (Room = '2' OR Room = '4')
THX寻求帮助
答案 0 :(得分:0)
您可以通过条件聚合来做到这一点:
SELECT
SUM(Papers) AS Papers,
SUM(
CASE
WHEN EXISTS (
SELECT 1 FROM MyTable
WHERE Room = m.Room AND Pens > m.Pens
) THEN 0
ELSE Pens
END
) AS Pens
FROM MyTable m
WHERE (Room = '2' OR Room = '4')