2017-07-02 45 views
0

我有數據的兩個MSSQL表所示:在Excel中MSSQL連接表像數據透視表可能?

table_fruit

id valueid valuetext 
111 1  apple 
111 2  pear 
111 3  orange 
112 1  kiwi 
112 2  pear 
112 3  banana 

table_people

id name 
111 bob 
112 george 

我想是這樣使用在同一行上的最終結果以上兩個表格:

name fruit1 fruit2 fruit3 
bob  apple pear orange 
george kiwi pear banana 

我已經嘗試加入鏈接在ID上的表,但最終在結果網格中每個ID三行?

感謝您尋找

+0

是,與PIVOT子句。大量的例子在網上和SO上。 –

回答

2

解決方案1(未測試)

SELECT name, [0] fruit1, [1] fruit2, [2] fruit3 
FROM 
(
    SELECT f0.id, f0.name, f1.valuetext, f1.valueid 
    from table_people f0 left outer join table_fruit f1 on f0.id=f1.id 
) AS SourceTable 
PIVOT 
(
MAX(valuetext) FOR valueid IN ([0], [1], [2]) 
) AS PivotTable; 
+0

謝謝你的工作。 –

0

解決方案3:

select f0.name, 
f1.valuetext fruit1, f2.valuetext fruit2, f3.valuetext fruit3 
from table_people f0 
left outer join table_fruit f1 on f0.id=f1.id and f1.valueid=1 
left outer join table_fruit f2 on f0.id=f2.id and f2.valueid=2 
left outer join table_fruit f3 on f0.id=f3.id and f3.valueid=3 
0

溶液2:

select f0.name, 
Max(case when f1.valueid=1 then f1.valuetext else cast(null as varchar(1)) end) fruit1, 
Max(case when f1.valueid=2 then f1.valuetext else cast(null as varchar(1)) end) fruit2, 
Max(case when f1.valueid=3 then f1.valuetext else cast(null as varchar(1)) end) fruit3 
from table_people f0 
left outer join table_fruit f1 on f0.id=f1.id 
group by f0.id, f0.name