从Pivot tsql中删除空列

时间:2012-06-27 13:25:01

标签: sql-server-2008 tsql pivot pivot-without-aggregate

我在tsql中开发了一个类似于以下内容的数据透视表:

MaturityBand    AAA     AA+     AA      AA-     A+      A       A-      Grand_Total 
Less than 1 yr  NULL    NULL    NULL    NULL    NULL    NULL    7.92    7.92
1 to 5 yrs      NULL    NULL    0.44    NULL    NULL    1.95    8.96    11.35
5 to 10 yrs     NULL    NULL    1.33    NULL    NULL    4.11    4.04    9.98
10 to 20 yrs    NULL    NULL    1.14    NULL    NULL    0.74    1.07    2.95
>20 years       NULL    NULL    0.15    NULL    NULL    NULL    0.14    0.29
Total           NULL    NULL    3.06    NULL    NULL    6.8     22.13   31.99

我想要做的是删除空列,以便上面的内容变为:

MaturityBand    AA      A       A-      Grand_Total 
Less than 1 yr  NULL    NULL    7.92    7.92
1 to 5 yrs      0.44    1.95    8.96    11.35
5 to 10 yrs     1.33    4.11    4.04    9.98
10 to 20 yrs    1.14    0.74    1.07    2.95
>20 years       0.15    NULL    0.14    0.29
Total           3.06    6.8     22.13   31.99

这可能吗?

(如有必要,我可以发布我的代码。)

1 个答案:

答案 0 :(得分:1)

不,WHEREHAVING子句中的过滤器适用于行,而不适用于列。如果您不想要特定列,则只能从SELECT子句中手动排除它。

SELECT 
MaturityBand, AA, A, [A-], Grand_Total 
FROM
(
   /*put your pivot query here*/
)some_alias

以下是我今天为动态支点撰写的答案(如评论中建议的aF。)。

Dynamic Pivot Query

请尝试一下,让我知道结果。实际上,如果有效,我会感到惊讶。