我有下表(table1):
CODE PRICE ID
111 582 1
222 384 2
333 659 1
111 683 2
444 987 2
555 128 2
333 851 1
222 398 2
我需要对所有代码进行分组,然后显示3列,代码,然后在ID = 1时显示价格总和,另一个在ID = 2时显示价格总和。
结果表应如下所示:
CODE PRICE_1 PRICE_2
111 582 0
222 0 683
333 1510 782
444 0 987
555 0 128
我能够创建一些查询,例如:
select CODE, (select SUM(PRICE) from TABLE1 where ID = 1), (select SUM(PRICE)
from TABLE1
group by CODE
但我得到了这个,其中PRICE_1和PRICE_2是所有这些的总和,而不是按CODE(111,222等)对它们进行分组。我不知道如何将它们分组到"子选择"。
CODE PRICE_1 PRICE_2
111 2092 2580
222 2092 2580
333 2092 2580
444 2092 2580
555 2092 2580
答案 0 :(得分:3)
试试这个 -
SELECT CODE,
(
SELECT SUM(Price)
FROM table1 a
WHERE a.ID = 1
AND a.CODE = b.CODE
),
(
SELECT SUM(Price)
FROM table1 a
WHERE a.ID = 2
AND a.CODE = b.CODE
)
FROM table1 b
GROUP BY CODE
没有重新阅读:
SELECT
CODE,
ISNULL(SUM(CASE WHEN ID = 1 THEN Price END), 0),
ISNULL(SUM(CASE WHEN ID = 2 THEN Price END), 0)
FROM table1
GROUP BY CODE
答案 1 :(得分:0)
select code,case when id=1 then sum(price) end, case when id=2 then sum(price) end from R5ORDERLINES
按代码分组,按代码分类ID
试试这个它将起作用输出
Code Price1 Price2
111 582 NULL
111 NULL 683
222 NULL 782
333 1510 NULL
444 NULL 987
555 NULL 128
存在细微差别,但查询提供了所有值。
由于