[英]SQL query to sum the data
我的表数据如下
TaxTypeCode1 TaxTypeCode2 PNO Amount
-----------------------------------------
TX01 TX02 124 600
TX02 null 124 700
TX03 TX04 124 200
TX04 null 124 300
TX05 TX06 126 400
TX06 null 127 500
TX07 null 128 800
我想编写SQL查询来检索数据。
如果pno相同且TaxTypeCode1包含TaxTypeCode2然后将amt求和,则条件适用
我的预期输出是
PNO Amount
---------------
124 1300
124 500
126 400
127 500
128 800
124具有1300,因为pno相同且TaxTypeCode2(TX02)TaxTypeCode1(TX02)相同,然后求和
TX01 (TX02) 124 600
(TX02) null 124 700
126有400,因为pno不同且TaxTypeCode2(TX02)TaxTypeCode1(TX02)相同不求和
TX05 (TX06) (126) 400
(TX06) null (127) 500
谁能说出如何编写查询来检索该数据的方法?
SELECT PNO,SUM(Amount)
FROM YOURTABLE
GROUP BY PNO;
这是您的表和数据:
CREATE TABLE Test
(
TaxTypeCode1 CHAR(4),
TaxTypeCode2 CHAR(4),
PNO INT,
Amount INT
)
INSERT INTO Test VALUES('TX01', 'TX02', 124, 600)
INSERT INTO Test VALUES('TX02', null, 124, 700)
INSERT INTO Test VALUES('TX03', 'TX04', 124, 200)
INSERT INTO Test VALUES('TX04', null, 124, 300)
INSERT INTO Test VALUES('TX05', 'TX06', 126, 400)
INSERT INTO Test VALUES('TX06', null, 127,500)
INSERT INTO Test VALUES('TX07', null, 128, 800)
这是为您查询:
SELECT PNO, SUM(Amount)
FROM Test
GROUP BY PNO, COALESCE(TaxTypeCode2, TaxTypeCode1)
结果与您的预期输出匹配。
我发现您确实在按PNO和第二或第一列(如果第二为空)聚合数据。 COALESCE(TaxTypeCode2, TaxTypeCode1)
将首先返回不为空。
您也可以使用ISNULL(TaxTypeCode2, TaxTypeCode1)
。 COALESCE
可以具有两个以上的参数,例如COALESCE(TaxTypeCode3, TaxTypeCode2, TaxTypeCode1)
。
看到:
SELECT COALESCE(TaxTypeCode2, TaxTypeCode1) as sumBy, * FROM Test
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.