sql server 特殊的汇总行怎么实现

sql server 特殊的汇总行怎么实现,第1张

CREATE TABLE #temp (

IDINT,

otherID INT,

keyID INT,

weekName VARCHAR(20),

weekName2 VARCHAR(20),

Num1 INT,

Num2 INT

)

INSERT INTO #temp

SELECT 1, 19, 0, '星期日', '星期日', 0, 0 UNION ALL

SELECT 2, 19, 1, '星期一', '星期一', 0, 0 UNION ALL

SELECT 3, 19, 1, '星期二', '星期二', 0, 0 UNION ALL

SELECT 4, 19, 1, '星期三', '星期三', 0, 0 UNION ALL

SELECT 5, 19, 1, '星期四', '星期四', 0, 0 UNION ALL

SELECT 6, 19, 0, '星期五', '星期五', 0, 0 UNION ALL

SELECT 7, 19, 0, '星期六', '星期六', 0, 0 UNION ALL

SELECT 8, 20, 0, '星期日', '星期日', 0, 0

SELECT

ID,

otherID,

keyID,

weekName,

weekName2,

Num1,

Num2,

0 AS OrderByFlag

FROM

#temp

UNION ALL

SELECT

0 AS id,

otherID,

keyID,

'小计',

'小计',

SUM(Num1),

SUM(Num2),

1 AS OrderByFlag

FROM

#temp

GROUP BY

otherID,

keyID

ORDER BY

otherID, OrderByFlag

ID otherID keyID weekName weekName2Num1Num2OrderByFlag

----------- ----------- ----------- -------------------- -------------------- ----------- ----------- -----------

1 19 0 星期日 星期日 0 0 0

2 19 1 星期一 星期一 0 0 0

3 19 1 星期二 星期二 0 0 0

4 19 1 星期三 星期三 0 0 0

5 19 1 星期四 星期四 0 0 0

6 19 0 星期五 星期五 0 0 0

7 19 0 星期六 星期六 0 0 0

0 19 0 小计 小计 0 0 1

0 19 1 小计 小计 0 0 1

8 20 0 星期日 星期日 0 0 0

0 20 0 小计 小计 0 0 1

(11 行受影响)

多 SELECT 了一个 OrderByFlag 用于排序。

SELECT *

FROM

(

SELECT TOP 10 *

FROM Tbl

ORDER BY Id DESC

) t

ORDER BY Id ASE


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11423954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存