SQL Server多个分组

乔治·埃瓦兹(George Eivaz)

我被看似简单的问题所困扰。我们有下表。

ID----收入--年偏移--收入乘偏移-11000 
 1空
 2500 1空
 3400 1空
 4 0 1空
 5 2000 2空
 6 0 2空              
 7400 2空

我想弄清楚该怎么做,就是将“收入偏移”列中的所有“收入”列加起来,然后放在“收入与偏移量列”的第一行中。令人敬畏的是,如果“按收入划分的收入”列在第1行中的值为1900,在第5行中的值为2400,而其余行则保持不变。

我知道这听起来像是一个简单的问题。但是我已经尝试了Window函数,Row_number(),SELF连接表,并且每个表都可以解决,但是很难将它们放在一起。

预先感谢,乔治

史蒂芬(Stephan)

我的餐桌

DECLARE @yourTable TABLE (ID INT,Income INT,[Years Offset] INT,[Income By Offset] INT NULL);

INSERT INTO @yourTable
VALUES  (1,1000,1,NULL),
        (2,500,1,NULL),
        (3,400,1,NULL),
        (4,0,1,NULL),
        (5,2000,2,NULL),
        (6,0,2,NULL),
        (7,400,2,NULL);

实际查询

SELECT  ID,
        Income,
        [Years Offset],
        CASE
            WHEN ID = MIN(ID) OVER (PARTITION BY [Years Offset])
                THEN SUM(Income) OVER (PARTITION BY [Years Offset])
            ELSE [Income By Offset]
        END AS [Income By Offset]
FROM @yourTable

结果

ID          Income      Years Offset Income By Offset
----------- ----------- ------------ ----------------
1           1000        1            1900
2           500         1            NULL
3           400         1            NULL
4           0           1            NULL
5           2000        2            2400
6           0           2            NULL
7           400         2            NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章