gpt4 book ai didi

sql-server - 如何根据类型显示正确的 sum() 值

转载 作者:行者123 更新时间:2023-12-01 06:17:45 25 4
gpt4 key购买 nike

TABLE 1         
STAFF_NO TYPE AMOUNT
A1 O 300
B3 A 10
A1 A 45
C3 O 70
C4 A 300
D4 O 100

TABLE2
STAFF_NO CODE
A1 SS1
B3 SS1
C3 SS2
C4 SS2
D4 SS2

我在内部连接 ​​2 个表,并根据代码选择代码、人数和“O”和“A”类型的总和。这是我的 SQL 语句:

SELECT DISTINCT B.CODE, 
COUNT(DISTINCT B.CODE) AS HEADCOUNT,
O=(SELECT SUM(AMOUNT) FROM TABLE1 WHERE TYPE ='O'),
A=(SELECT SUM(AMOUNT) FROM TABLE1 WHERE TYPE ='A')
FROM TABLE1 A INNER JOIN TABLE2 B ON A.STAFF_NO=B.STAFF_NO group by B.code

我的错误:“O”和“A”上的 SS1 和 SS2 具有相同的值。

CODE    HEADCOUNT   O   A
SS1 2 300 55
SS2 3 300 55

我应该得到的结果:

CODE    HEADCOUNT   O   A
SS1 2 300 55
SS2 3 170 300

最佳答案

GROUP BY 是你的 friend 。

SELECT
B.CODE,
COUNT(A.STAFF_NO) HEADCOUNT,
SUM(CASE A.TYPE WHEN 'O' THEN A.AMOUNT ELSE 0 END) O,
SUM(CASE A.TYPE WHEN 'A' THEN A.AMOUNT ELSE 0 END) A
FROM
TABLE1 A
INNER JOIN TABLE2 B ON B.STAFF_NO = A.STAFF_NO
GROUP BY
B.CODE

如果 A.AMOUNT 可以包含 NULL,则使用 ISNULL:

SUM(CASE A.TYPE WHEN 'O' THEN ISNULL(A.AMOUNT, 0) ELSE 0 END) O

关于sql-server - 如何根据类型显示正确的 sum() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30635362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com