使用Rollup用于特定列

时间:2015-10-02 10:10:29

标签: sql sql-server-2008

我正在尝试使用SQL重新制作这张excel表。

Example

我正在尝试使用相同的数字对LOAN_ACCT_1进行总线分组。然后,我想在LOAN_AM之后对colums中的所有值求和。

我已经尝试了很长一段时间了,但是我最接近使用ROLLUP。我遇到的问题是我似乎无法在LOAN_ACCT_1上进行分组。

我接近这个microsoft site的解决方案,但我似乎无法完成解决方案。我有一种更容易忽视的方式吗?

SELECT CASE WHEN(GROUPING(l.LOAN_ACCT_1) = 1) THEN 'TOTAL'
            ELSE ISNULL(l.LOAN_ACCT_1, 'UNKNOWN')
            END AS LOAN_ACCT_1,
       CASE WHEN(GROUPING(l.LOAN_TYPE) = 1) THEN 'ALL'
            ELSE ISNULL(l.LOAN_TYPE, 'UNKNOWN')
            END AS LOAN_TYPE,
       SUM(l.LOAN_AMT_FINANCED) as LOAN_AMT_FINANCED
FROM LLOAN As l
GROUP BY l.LOAN_ACCT_1, LOAN_TYPE WITH ROLLUP
ORDER BY l.LOAN_ACCT_1 

1 个答案:

答案 0 :(得分:1)

如果您只想要一列的总数而不是两者,那么请使用GROUPING_SETS

GROUP BY GROUPING SETS ((l.LOAN_ACCT_1, LOAN_TYPE), (l.LOAN_ACCT_1))

您可能需要查看documentation以更好地了解其工作原理。