SQL pivot在语句中

时间:2014-08-04 09:15:46

标签: sql pivot-table

有关SQL中的数据透视的问题。 如何在IN中的PIVOT语句中使用任意名称? 例如,在IN I中的下面的声明中,我指示星期几 周一周二周三周四周五周六周日 但是,是否可以使用仅具有规范的列值以及将用于IN的列名? 因为有些时候我不知道IN中会有哪些值。

SELECT * 
      FROM (
            SELECT 
            EmployeeID
           , [WeekDay] = DATENAME(WEEKDAY, DateOut)
      FROM dbo.WorkOut
) t
PIVOT (
      COUNT([WeekDay]) 
      FOR [WeekDay] IN (
      Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
      )
) p

1 个答案:

答案 0 :(得分:0)

不幸的是你不能在数据透视中使用子查询。 我们为此目的使用生成的sql语句(在C#程序中): - 在第一步中运行查询并为枢轴的IN部分创建逗号分隔列表, - 在第二步中运行枢轴。 它运行正常。 如果只使用T-SQL,则必须在变量中创建整个选择句子,然后执行它。