我目前有以下表格:
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 Sever 2012
答案 0 :(得分:1)
一种方法是在每张桌子上重复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