我在SQL Fiddle示例(TestTable)中有一些数据。我最终想要的是计算每个名称组合值的值之和(OutPut表显示理想输出,即可以在扩展输入数据上用于计算总和的组中的标签)。
我尝试过使用不同的row_number()等进行交叉连接,但无法获得所需的答案。我认为通过存储过程是可能的,但如果可能的话,我希望避免这种情况。
MS SQL Server 2008架构设置:
CREATE TABLE [dbo].[TestTable](
[YEAR] [bigint] NOT NULL,
[NAME] [nvarchar](20) NOT NULL,
[VALUE] [float] NOT NULL
)
;
INSERT INTO TestTable
([Year], [Name], [Value])
VALUES
(2009, 'ALFRED', 343.33),
(2009, 'ALFRED', 33.23),
(2009, 'ALFRED', 40.34),
(2009, 'TOM', 33.3),
(2009, 'TOM', 34.3),
(2009, 'JULIE', 90),
(2009, 'JULIE', 33)
;
CREATE TABLE [dbo].[OutputTable](
[GROUPID] [bigint] NOT NULL,
[YEAR] [bigint] NOT NULL,
[NAME] [nvarchar](20) NOT NULL,
[VALUE] [float] NOT NULL
)
;
INSERT INTO OutPutTable
([GroupID], [Year], [Name], [Value])
VALUES
(1, 2009, 'ALFRED', 343.33),
(1, 2009, 'TOM', 33.3),
(1, 2009, 'JULIE', 90),
(2, 2009, 'ALFRED', 343.33),
(2, 2009, 'TOM', 33.3),
(2, 2009, 'JULIE', 33),
(3, 2009, 'ALFRED', 343.33),
(3, 2009, 'TOM', 34.4),
(3, 2009, 'JULIE', 90),
(4, 2009, 'ALFRED', 343.33),
(4, 2009, 'TOM', 34.3),
(4, 2009, 'JULIE', 33),
(5, 2009, 'ALFRED', 33.23),
(5, 2009, 'TOM', 33.3),
(5, 2009, 'JULIE', 90),
(6, 2009, 'ALFRED', 33.23),
(6, 2009, 'TOM', 33.3),
(6, 2009, 'JULIE', 33),
(7, 2009, 'ALFRED', 33.23),
(7, 2009, 'TOM', 34.4),
(7, 2009, 'JULIE', 90),
(8, 2009, 'ALFRED', 33.23),
(8, 2009, 'TOM', 34.3),
(8, 2009, 'JULIE', 33),
(9, 2009, 'ALFRED', 40.34),
(9, 2009, 'TOM', 33.3),
(9, 2009, 'JULIE', 90),
(10, 2009, 'ALFRED', 40.34),
(10, 2009, 'TOM', 33.3),
(10, 2009, 'JULIE', 33),
(11, 2009, 'ALFRED', 40.34),
(11, 2009, 'TOM', 34.4),
(11, 2009, 'JULIE', 90),
(12, 2009, 'ALFRED', 40.34),
(12, 2009, 'TOM', 34.3),
(12, 2009, 'JULIE', 33)
;
查询1 :
select groupid,sum(value) from OutputTable group by groupid
Results :
| groupid | |
|---------|--------------------|
| 1 | 466.63 |
| 2 | 409.63 |
| 3 | 467.72999999999996 |
| 4 | 410.63 |
| 5 | 156.53 |
| 6 | 99.53 |
| 7 | 157.63 |
| 8 | 100.53 |
| 9 | 163.64 |
| 10 | 106.64 |
| 11 | 164.74 |
| 12 | 107.64 |