SQL pivot in statement



关于SQL中pivot的问题。如何在PIVOT语句中使用任意名称?例如,在下面的语句中,我直接指定了星期几星期一、星期二、星期三、星期四、星期五、星期六、星期日但是,是否有可能将列值与仅用于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

不幸的是,您不能在pivot中进行子查询。我们使用生成的sql语句来达到这个目的(在c#程序中):-在第一步中,运行查询并为pivot的in部分创建逗号分隔的列表,-在第二步运行枢轴。它运行良好。如果只使用T-SQL,则必须在变量中创建整个select语句,然后执行。

最新更新