SQL Server Pivot/Unpivot
我正在试图找到一种方法来转换我的这个表,它将所有列中的内容排序为行SQL Server Pivot/Unpivot,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在试图找到一种方法来转换我的这个表,它将所有列中的内容排序为行 EmpID Day StartTime ------------------------------------------------- 4 SUNDAY 10:00:00 AM 4 MONDAY 8:00:00 AM 4 TUESDAY 8:00:00 AM 4 W
EmpID Day StartTime
-------------------------------------------------
4 SUNDAY 10:00:00 AM
4 MONDAY 8:00:00 AM
4 TUESDAY 8:00:00 AM
4 WEDNESDAY 8:00:00 AM
4 THURSDAY 8:00:00 AM
4 FRIDAY NULL
4 SATURDAY NULL
800 SUNDAY 10:00:00 AM
800 MONDAY 8:00:00 AM
800 TUESDAY 8:00:00 AM
800 WEDNESDAY 8:00:00 AM
800 THURSDAY 8:00:00 AM
800 FRIDAY NULL
800 SATURDAY NULL
进入
等等
我见过Pivot和Unpivot的例子,但是Pivot/Unpivot函数会不会太复杂?我只会使用条件聚合:
select empid,
max(case when day = 'Sunday' then StartTime end) as Sunday_StartTime,
max(case when day = 'Monday' then StartTime end) as Monday_StartTime,
. . .
from t
group by empid;
如果您想使用PIVOT 范例 注意:这假设您的表是示例中显示的3列。如果有额外的列,则应使用子查询替换表,如
从表格src中选择EmpID、Day、StartTime谢谢您的回答,但我正在寻找pivot/unpivot替代方案。出于学习目的,请更新您的帖子,明确您只寻找pivot/unpivot解决方案,这样人们就不会浪费时间编写替代解决方案。
select empid,
max(case when day = 'Sunday' then StartTime end) as Sunday_StartTime,
max(case when day = 'Monday' then StartTime end) as Monday_StartTime,
. . .
from t
group by empid;
Select *
From YourTable src
Pivot ( max(StartTime) for Day in ([Sunday],[Monday],[Tuesday] ) ) pvt