我有这个CTE。我的目标是显示结果集中的所有行和具有相同值的列的总数。如何将Totals添加到CTE生成的行组中
WITH CTEVal AS
(SELECT RNum, Amount, Tag, TAmount,
ROW_NUMBER() OVER(ORDER BY CONVERT(DATETIME, TDate, 101) DESC) AS RowNum
from [dbo].[viewJD])
SELECT TDate, RNum,
CASE WHEN Tag = 'DR' THEN CONVERT(VARCHAR(50),Amount) ELSE '0.00' END AS Debit,
CASE WHEN Tag = 'CR' THEN CONVERT(VARCHAR(50),Amount) ELSE '0.00' END AS Credit FROM CTEVal
返回结果集
TDate Rnum Debit Credit
12-22-2015 8 100 0.00
12-22-2015 8 300 0.00
12-22-2015 8 0.00 400
12-22-2015 9 250 0.00
12-22-2015 9 250 0.00
12-22-2015 9 0.00 500
12-23-2015 10 600 0.00
12-23-2015 10 0.00 100
12-23-2015 10 0.00 500
预期的结果集
TDate Rnum Debit Credit
12-22-2015 8 100 0.00
12-22-2015 8 300 0.00
12-22-2015 8 0.00 400
TOTAL 400 400
12-22-2015 9 250 0.00
12-22-2015 9 250 0.00
12-22-2015 9 0.00 500
TOTAL 500 500
12-23-2015 10 600 0.00
12-23-2015 10 0.00 100
12-23-2015 10 0.00 500
TOTAL 600 600
选择*从viewJD将返回
TDate Rnum Amount Tag TAmount
12-22-2015 8 100 DR 400
12-22-2015 8 300 DR 400
12-22-2015 8 400 CR 400
12-22-2015 9 250 DR 500
12-22-2015 9 250 DR 500
12-22-2015 9 500 CR 500
12-23-2015 10 600 DR 600
12-23-2015 10 100 CR 600
12-23-2015 10 500 CR 600
DR的
总和= CR的总和= TAmount
看看使用'ROLLUP'也许:https://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx。你没有脚本化你的源数据的样本,否则我会回答一个完整的解决方案。 – Tanner
@Jc Balantakbo你可以告诉我什么是表viewJD中列Rnum的数据类型..? – DJs
@Siya Rnum应该是int –