我可以在没有括号的情况下使用PIVOT吗?

时间:2011-08-10 20:40:42

标签: tsql sql-server-2008 pivot pivot-table

PIVOT 
(
    count(DueCount) FOR dueLibraries.s_folder IN ([Assembly Report-TUL],[Balance-TUL],[BOM-TUL],[Hydrostatic-TUL],[Inspection-TUL],[IOM Manual-TUL],[MTR-TUL],[NDT-TUL],[Performance-TUL],[Inputs - TUL],[Transmitted])
) as MonthlyTally 

我宁愿这么做:

PIVOT 
(
    count(DueCount) FOR dueLibraries.s_folder IN (select * from dueLibraries)
) as MonthlyTally 

有办法吗?

1 个答案:

答案 0 :(得分:4)

你的问题似乎是双重的。

首先,第一个代码段的IN列表中的标识符是分隔标识符。它们必须用方括号分隔,因为它们do not obey the rules用于Transact-SQL中的常规标识符(特别是因为它们包含空格和连字符)。

您问题的第二部分是关于用掩码替换明确的列列表,以使列表动态化。现在,没有可用的语法,您唯一的选择似乎是带有PIVOT子句的动态查询。 Here's one example如何实施。