如何解决SQL枢纽/取消枢纽?
我真的希望有人可以在这里为我提供帮助,我的表格结构如下:
检索此数据的查询是:
SELECT
[Pattern Number],Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
FROM Access.Pattern_Details
WHERE [Pattern Number] = 4
+----------------+--------+--------+---------+-----------+----------+--------+----------+
| Pattern Number | Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
+----------------+--------+--------+---------+-----------+----------+--------+----------+
| 4 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
+----------------+--------+--------+---------+-----------+----------+--------+----------+
我想看起来像这样:
+----------------+------------+-----------+
| Pattern Number | WorkingDay | Day |
+----------------+------------+-----------+
| 4 | 0 | Sunday |
| 4 | 1 | Monday |
| 4 | 1 | Tuesday |
| 4 | 1 | Wednesday |
| 4 | 1 | Thursday |
| 4 | 1 | Friday |
| 4 | 0 | Saturday |
+----------------+------------+-----------+
我尝试过PIVOT
/ UNPIVOT
,感觉好像是正确的方向,但是我真的在如何获得结果上苦苦挣扎:(
解决方法
在SQL Server中,我建议使用cross apply
和values()
:
select pd.[Pattern Number],x.*
from Access.Pattern_Details pd
cross apply (values
('Sunday',Sunday),('Monday',Monday),('Tuesday',Tuesday),('Wednesday',Wednesday),('Thursday',Thursday),('Friday',Friday),('Saturday',Saturday)
) x(day,workingDay)
where pd.[Pattern Number] = 4
,
您可以使用@PlanningVariableCollection
:
UNPIVOT
SELECT [Pattern Number],[Working Day],[Day]
FROM
(
SELECT 4 [Pattern Number],0 Sunday,1 Monday,1 Tuesday,1 Wednesday,1 Thursday,1 Friday,0 Saturday
) pvt
UNPIVOT([Working Day] FOR [Day] IN ([Sunday],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday])) unpvt
的文档和解释都很好。参见:Using Pivot and Unpivot - SQL Server
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。