2016-09-25 66 views
5

我在SQL中有2個表。SQL PIVOT:一對多

dbo.main

|id | mid | tid 
1 yes no 

dbo.external

| id | type | element | 
    1 c  9 
    1 d  10 
    1 h  11 
    1 g  12 

我怎麼努力實現的是:

| id | mid | tid | c | d | h | g | 
    1 yes no 9 10 11 12 

我嘗試使用支點上dbo.external statment爲

SELECT * 
FROM 
(
    SELECT id,type,element 
    FROM dbo.external 
) SRC 
PIVOT 
(
    MAX(FIELD_DATA) 
    FOR FIELD_NUMBER IN (id,type,element) 
) PIV; 

問題是: 我該如何透視dbo.external然後在一個sql語句中加入dbo.main?

回答

5

只是JOINMainPivot源查詢

SELECT * 
FROM (SELECT e.id,mid,tid,[element],[type] 
     FROM dbo.[external] e 
       JOIN main m 
       ON e.id = m.id) a 
     PIVOT (Max([element]) 
      FOR [type] IN ([c],[d],[h],[g])) PIV 
+0

非常感謝伴侶 – user3165474

4

使用WITH條款:

WITH temp AS(
    -- here make the join 
) 
SELECT id,mid,tid, c,d,h,g 
FROM temp 
PIVOT 
(
    MAX(FIELD_DATA) 
    FOR type IN (c,d,h,g) 
) as PIV; 
+0

這個工程太。 :d – user3165474