您好,请帮我解决这个问题。我在我的数据库中有这些记录:
Name Activity DateScheduled
Kevin Meeting 8/1/2016
Kevin Lunch Meeting 8/1/2016
Kevin Client Meeting 8/3/2016
Mark Report 8/2/2016
Mark Occular 8/4/2016
Mark Board Meeting 8/2/2016
我想要的输出是这样的:
Name 8/1/2016 8/2/2016 8/3/2016 8/4/2016
Kevin Meeting null Client Meeting null
Lunch Meeting null null null
Mark null Report null Occular
null Board Meeting null null
到目前为止,这是我尝试的但显示器不是我想要的输出:
SELECT name
CASE WHEN (DateScheduled = '08/01/2016') THEN Activity ELSE Null END AS [08/01/2016]
,CASE WHEN (DateScheduled = '08/02/2016') THEN Activity ELSE Null END AS [08/02/2016]
,CASE WHEN (DateScheduled = '08/03/2016') THEN Activity ELSE Null END AS [08/03/2016]
,CASE WHEN (DateScheduled = '08/04/2016') THEN Activity ELSE Null END AS [08/04/2016]
From Schedule
提前致谢。
答案 0 :(得分:0)
select
*
from (
select * from EventsTable
) Data
PIVOT (
MAX(Activity)
FOR DateScheduled
IN (
[20160801],[20160802],[20160803],[20160804]
)
) PivotTable
答案 1 :(得分:0)
您可以选择构建here,而不是在Pivot查询中手动提供日期
{{1}}
请注意,在执行上述SQL Select语句之前,需要为dynamic SQL pivot query创建用户定义的函数。此函数在给定的两个日期之间启用日历表dbo.DateTable()
这个动态SQL支点的另一个有趣的部分是,程序员使用create dates table in SQL。所以我们连接用逗号分隔的所有日期并构建我们的@SQL变量。 最后,我们使用sp_ExecuteSQL存储过程
评估@SQL命令输出如下