【发布时间】:2018-04-27 09:47:38
【问题描述】:
我想要所有表格行,并且每当银行字段中的值更改为带有字段小计的新行时:value1、value2、value3
我想使用 SQL 查询执行以下操作:
Create Table #MyTable (
bank nvarchar(255),
account nvarchar(255),
value1 decimal(18,2),
value2 decimal(18,2),
value3 decimal(18,2),
);
INSERT INTO #MyTable
(bank, account, value1, value2, value3)
VALUES
('VR-Bank', 'Kto-A', 1, 2, 3),
('VR-Bank', 'Kto-B', 3, 2, 1),
('VR-Bank', 'Kto-C', 4, 4, 5),
('NOSPA', 'Kto-X', 1, 1, 1),
('NOSPA', 'Kto-Y', 4, 3, 2);
我想要没有先前总和的总和,因为这些值已经存在
Select
bank,
account,
SUM(value1), -- I would like this without SUM()
SUM(value2),
SUM(value3)
from #MyTable
GROUP BY
GROUPING SETS ((bank), (account)) -- Without summing up this does not work
-- NULL Kto-A 1.00 2.00 3.00
-- NULL Kto-B 3.00 2.00 1.00
-- NULL Kto-C 4.00 4.00 5.00
-- NULL Kto-X 1.00 1.00 1.00
-- NULL Kto-Y 4.00 3.00 2.00
-- NOSPA NULL 5.00 4.00 3.00
-- VR-Bank NULL 8.00 8.00 9.00
我想实现以下目标:
-- ======================================
-- VR-Bank Kto-A 1.00 2.00 3.00 -- here also the value for the bank
-- VR-Bank Kto-B 3.00 2.00 1.00
-- VR-Bank Kto-C 4.00 4.00 5.00
-- VR-Bank NULL 8.00 8.00 9.00 -- here the SUM
-- NOSPA Kto-X 1.00 1.00 1.00
-- NOSPA Kto-Y 4.00 3.00 2.00
-- NOSPA NULL 5.00 4.00 3.00 -- SUM for the next bank
Drop Table #MyTable;
我希望有人可以帮助我。
【问题讨论】:
-
GROUP BY GROUPING SETS ((bank, account), (bank))? -
非常感谢,很合适。我之前尝试过 GROUP BY、ROLLUP、CUBE 等。当然,我还必须计算总和,这样 GROUPING SETS 才能正常工作。问题已为我解答。
标签: sql sql-server