pivot和unpivot sql表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pivot和unpivot sql表相关的知识,希望对你有一定的参考价值。
我目前有以下表格:
Check 1:
Name |Q1|Q2|Q3|Q4
----------- |--|--|--|--
McDonalds | P| P| F| P
Burger King | F| P| P| F
Check 2:
Name |Q1|Q2|Q3|Q4
----------- |--|--|--|--
McDonalds | F| F| F| P
Burger King | F| P| P| P
我想在Q1-Q4上打开,以便我得到一个名为'Quarter'的列。我还想将两个(或更多)表与关于该检查的新列组合,例如:
Name |Quarter|Check 1|Check 2
------------|-------|-------|-------
McDonalds | Q1| P| F
McDonalds | Q2| P| F
McDonalds | Q3| F| F
McDonalds | Q4| P| P
Burger King | Q1| F| F
Burger King | Q2| P| P
Burger King | Q3| P| P
Burger King | Q4| F| P
我找到了一种通过以下方法对四分之一列上的表格进行取消操作的方法:
SELECT Name, Quarter, PassFail
FROM Check1
unpivot
(
PassFail
for Quarter in (Q1, Q2, Q3, Q4)
) u
但我无法将这两个步骤结合起来。任何帮助,将不胜感激。
编辑我正在使用Microsoft SQL Server 2012
答案
一种方法是在每张桌子上重复你的UNPIVOT
和JOIN
结果:
SELECT T1.*, T2.Check2
FROM (SELECT Name, Quarter, Check1
FROM CheckTable1
UNPIVOT
(
Check1
for Quarter in (Q1, Q2, Q3, Q4)
) u
) T1
JOIN (SELECT Name, Quarter, Check2
FROM CheckTable2
UNPIVOT
(
Check2
for Quarter in (Q1, Q2, Q3, Q4)
) u
) T2 ON T1.NAME = T2.NAME
AND T1.QUARTER = T2.QUARTER
以上是关于pivot和unpivot sql表的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 使用 Pivot 和 UnPivot 实现行列转换
SQL Server 使用 Pivot 和 UnPivot 实现行列转换
SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例