如上表中
保留所有字段,增加一列。计算billTypeName=‘调入单’和‘采购单’时
mtId相同的字段的和。
求各位大神帮忙
拜托了
【这样表述大家清楚吗 】
4 个解决方案
#1
select * ,SUM(CASE WHEN billTypeName IN('调入单','采购单') THEN SNUM ELSE 0 END)OVER(PARTITION BY mtId) FROM 表
#2
谢谢!试过了是可以的。
但是 如果想把这两条mtid相同的合并成一条怎么办?
试过用group by 但是当查询表中多个字段的时候就没有用了
但是 如果想把这两条mtid相同的合并成一条怎么办?
试过用group by 但是当查询表中多个字段的时候就没有用了
#3
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进行合计应该怎么写。
在表中需要得出两个字段分别是这一个月和上一个月的值?
如果根据最开始的一列period(月份)来对accountnum进行合计应该怎么写。
在表中需要得出两个字段分别是这一个月和上一个月的值?
#1
select * ,SUM(CASE WHEN billTypeName IN('调入单','采购单') THEN SNUM ELSE 0 END)OVER(PARTITION BY mtId) FROM 表
#2
谢谢!试过了是可以的。
但是 如果想把这两条mtid相同的合并成一条怎么办?
试过用group by 但是当查询表中多个字段的时候就没有用了
但是 如果想把这两条mtid相同的合并成一条怎么办?
试过用group by 但是当查询表中多个字段的时候就没有用了
#3
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进行合计应该怎么写。
在表中需要得出两个字段分别是这一个月和上一个月的值?
如果根据最开始的一列period(月份)来对accountnum进行合计应该怎么写。
在表中需要得出两个字段分别是这一个月和上一个月的值?