use*_*399 1 sql sql-server sql-server-2008
我试图对1列的值求和并将其仅按1列分组,但还要显示其他列。
基本上,如果数据看起来像:
Column1 Column2 Column3 Column4
----------------------------------
Col1Data0 Test1 Test2 1
Col1Data0 Test1 Test2 3
Col1Data1 Test1 Test2 2
Col1Data1 Test1 Test2 5
Run Code Online (Sandbox Code Playgroud)
查询应输出:
Column1 Column2 Column3 Column4
Col1Data0 Test1 Test2 4
Col1Data0 Test1 Test2 4
Col1Data1 Test1 Test2 7
Col1Data1 Test1 Test2 7
Run Code Online (Sandbox Code Playgroud)
您可以使用SUM窗口函数:
测试数据:
declare @t table (Column1 varchar(10), Column2 varchar(10), Column3 varchar(10), Column4 int)
insert into @t values
('Col1Data0','Test1','Test2',1),
('Col1Data0','Test1','Test2',3),
('Col1Data1','Test1','Test2',2),
('Col1Data1','Test1','Test2',5)
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT Column1, Column2, Column3,
SUM(Column4) OVER (PARTITION BY Column1) AS SumColumn4
FROM @t
Run Code Online (Sandbox Code Playgroud)
返回值:
Column1 Column2 Column3 SumColumn4
Col1Data0 Test1 Test2 4
Col1Data0 Test1 Test2 4
Col1Data1 Test1 Test2 7
Col1Data1 Test1 Test2 7
Run Code Online (Sandbox Code Playgroud)