sql – 如何将行转移到列中(自定义透视)
发布时间:2020-12-12 06:51:09 所属栏目:MsSql教程 来源:网络整理
导读:我有一个类似于以下的Sql Database表: Day Period SubjectMon 1 ChMon 2 PhMon 3 MthMon 4 CSMon 5 Lab1Mon 6 Lab2Mon 7 Lab3Tue 1 PhTue 2 EleTue 3 HuTue 4 PhTue 5 EnTue 6 CS2Tue 7 Mth 我希望它显示如下:种类的交叉表或枢轴 Day P1 P2 P3 P4 P5 P6 P7M
我有一个类似于以下的Sql Database表:
Day Period Subject Mon 1 Ch Mon 2 Ph Mon 3 Mth Mon 4 CS Mon 5 Lab1 Mon 6 Lab2 Mon 7 Lab3 Tue 1 Ph Tue 2 Ele Tue 3 Hu Tue 4 Ph Tue 5 En Tue 6 CS2 Tue 7 Mth 我希望它显示如下:种类的交叉表或枢轴 Day P1 P2 P3 P4 P5 P6 P7 Mon Ch Ph Mth CS2 Lab1 Lab2 Lab3 Tue Ph Ele Hu Ph En CS2 Mth 这样做的理想方式是什么?有人可以给我看一下Sql代码吗? 解决方法您可以使用PIVOT函数来完成它,但我更喜欢旧的学校方法:SELECT dy,MAX(CASE WHEN period = 1 THEN subj ELSE NULL END) AS P1,MAX(CASE WHEN period = 2 THEN subj ELSE NULL END) AS P2,MAX(CASE WHEN period = 3 THEN subj ELSE NULL END) AS P3,MAX(CASE WHEN period = 4 THEN subj ELSE NULL END) AS P4,MAX(CASE WHEN period = 5 THEN subj ELSE NULL END) AS P5,MAX(CASE WHEN period = 6 THEN subj ELSE NULL END) AS P6,MAX(CASE WHEN period = 7 THEN subj ELSE NULL END) AS P7 FROM Classes GROUP BY dy ORDER BY CASE dy WHEN 'Mon' THEN 1 WHEN 'Tue' THEN 2 WHEN 'Wed' THEN 3 WHEN 'Thu' THEN 4 WHEN 'Fri' THEN 5 WHEN 'Sat' THEN 6 WHEN 'Sun' THEN 7 ELSE 8 END >我更改了一些列名以避免使用保留字 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |