sql sum中怎么增加多个条件

时间:2021-02-17 03:03:20
sql sum中怎么增加多个条件
如上表中
保留所有字段,增加一列。计算billTypeName=‘调入单’和‘采购单’时
mtId相同的字段的和。

求各位大神帮忙
拜托了



【这样表述大家清楚吗  】

4 个解决方案

#1


select * ,SUM(CASE WHEN billTypeName IN('调入单','采购单') THEN SNUM ELSE 0 END)OVER(PARTITION BY mtId) FROM 表

#2


谢谢!试过了是可以的。
但是  如果想把这两条mtid相同的合并成一条怎么办?

试过用group by  但是当查询表中多个字段的时候就没有用了

#3


引用 2 楼 camdy_ll 的回复:
谢谢!试过了是可以的。
但是  如果想把这两条mtid相同的合并成一条怎么办?

试过用group by  但是当查询表中多个字段的时候就没有用了


SELECT 

FROM 
(select *,SUM(CASE WHEN billTypeName IN('调入单','采购单') THEN SNUM ELSE 0 END)OVER(PARTITION BY mtId) 
,ROW_NUMBER()OVER(PARTITION BY mtId ORDER BY mtId) AS RN
FROM 表) AS a 
WHERE RN=1

#4


追加问题:
如果根据最开始的一列period(月份)来对accountnum进行合计应该怎么写。
在表中需要得出两个字段分别是这一个月和上一个月的值?

#1


select * ,SUM(CASE WHEN billTypeName IN('调入单','采购单') THEN SNUM ELSE 0 END)OVER(PARTITION BY mtId) FROM 表

#2


谢谢!试过了是可以的。
但是  如果想把这两条mtid相同的合并成一条怎么办?

试过用group by  但是当查询表中多个字段的时候就没有用了

#3


引用 2 楼 camdy_ll 的回复:
谢谢!试过了是可以的。
但是  如果想把这两条mtid相同的合并成一条怎么办?

试过用group by  但是当查询表中多个字段的时候就没有用了


SELECT 

FROM 
(select *,SUM(CASE WHEN billTypeName IN('调入单','采购单') THEN SNUM ELSE 0 END)OVER(PARTITION BY mtId) 
,ROW_NUMBER()OVER(PARTITION BY mtId ORDER BY mtId) AS RN
FROM 表) AS a 
WHERE RN=1

#4


追加问题:
如果根据最开始的一列period(月份)来对accountnum进行合计应该怎么写。
在表中需要得出两个字段分别是这一个月和上一个月的值?