【发布时间】:2017-04-16 11:15:27
【问题描述】:
这就是表格“正常”的样子
WorkloadCategory | WorkloadCapacity| WorkloadTotalTime
-----------------|-----------------|------------------
DI | 317632 | 239.92
DI | 106706 | 32.45
DI | 35840 | 27.77
DI | 50000 | 48.07
DI | 8000 | 9.18
DI | 29120 | 15.71
DI | 0 | 0
使用以下查询:
SELECT
wlc.WorkloadCategory,
wl.WorkloadCapacity,
ROUND(wl.WorkloadMinutes * wl.WorkloadCapacity / 60 / assum.WorkYearHours, 2) AS WorkloadTotalTime
FROM
swam.Assumptions assum
CROSS JOIN
swam.WorkloadCategories wlc
INNER JOIN
swam.Workloads wl ON wlc.WorkloadCategoryID = wl.WorkloadCategoryID
ORDER BY
wlc.WorkloadCategory
我想要做的只是简单地将 WorkloadCapacity 和 WorkloadTotalTime 两列相加,并在表格底部有一个新行显示每列的总和。
我希望某些列为 NULL,因为这就是 ROLLUP 的工作方式,是的,我知道如果我愿意,我需要指定列名来读取“总计”……但我不明白为什么ROLLUP 的总和甚至根本没有显示出来。
我在本网站的另一篇文章中使用GROUP BY GROUPING SET(或类似的东西)尝试了类似的方法,但它并没有解决我遇到的问题。
SELECT
wlc.WorkloadCategory,
ROUND(wl.WorkloadMinutes * wl.WorkloadCapacity / 60 / assum.WorkYearHours, 2) AS WorkloadTotalTime
FROM
swam.Assumptions assum
CROSS JOIN
swam.WorkloadCategories wlc
INNER JOIN
swam.Workloads wl ON wlc.WorkloadCategoryID = wl.WorkloadCategoryID
GROUP BY
wlc.WorkloadCategory, wl.WorkloadCapacity,
assum.WorkYearHours, wl.WorkloadMinutes WITH ROLLUP
输出表只是 FULL 的 NULLS!
WorkloadCategory | WorkloadCapacity | WorkloadTotalTime
DI | 0 | 0
DI | 0 | NULL
DI | 0 | NULL
DI | 8000 | 9.18
DI | 8000 | NULL
DI | 8000 | NULL
DI | 29120 | 15.71
DI | 29120 | NULL
DI | 29120 | NULL
DI | 35840 | 27.77
DI | 35840 | NULL
DI | 35840 | NULL
DI | 50000 | 48.07
DI | 50000 | NULL
DI | 50000 | NULL
DI | 106706 | 32.45
DI | 106706 | NULL
DI | 106706 | NULL
DI | 317632 | 239.92
DI | 317632 | NULL
DI | 317632 | NULL
DI | NULL | NULL
提前感谢您提供的任何帮助。
【问题讨论】:
标签: sql-server tsql rollup