組由ROLLUP
:
DECLARE @t TABLE
(
CluserName VARCHAR(20) ,
ComputerName VARCHAR(20) ,
CoreCount INT
)
INSERT INTO @t
VALUES ('N/A', 'BackOffice1', 2),
('cluster1', 'sqlServer', 4),
('cluster1', 'webserver', 2),
('cluster1', 'sqlServer2', 6),
('cluster2', 'adServer', 2),
('cluster2', 'adServer2', 4)
SELECT CluserName , ComputerName, SUM(CoreCount) CoreCount
FROM @t
GROUP BY ROLLUP(CluserName,ComputerName)
ORDER BY GROUPING(CluserName) DESC, CluserName, GROUPING(ComputerName) desc
輸出:
CluserName ComputerName CoreCount
NULL NULL 20
cluster1 NULL 12
cluster1 sqlServer 4
cluster1 sqlServer2 6
cluster1 webserver 2
cluster2 NULL 6
cluster2 adServer 2
cluster2 adServer2 4
N/A NULL 2
N/A BackOffice1 2
如果你不想那麼總行:
SELECT CluserName , ComputerName, SUM(CoreCount) CoreCount
FROM @t
GROUP BY ROLLUP(CluserName,ComputerName)
HAVING CluserName IS NOT NULL OR ComputerName IS NOT NULL
ORDER BY GROUPING(CluserName) DESC, CluserName, GROUPING(ComputerName) desc
輸出:
CluserName ComputerName CoreCount
cluster1 NULL 12
cluster1 sqlServer 4
cluster1 sqlServer2 6
cluster1 webserver 2
cluster2 NULL 6
cluster2 adServer 2
cluster2 adServer2 4
N/A NULL 2
N/A BackOffice1 2
你使用的是什麼版本的sql? SQL服務器,MySQL,甲骨文? –
標題說這是MS Sql – Tobi
我正在使用MS SQL 2014 –