2016-09-25 12 views
5

मेरे पास SQL ​​में 2 तालिका है।एसक्यूएल पिवोट: एक से कई

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 बयान पर धुरी उपयोग करने का प्रयास
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

बस JOINPivot स्रोत क्वेरी में Main तालिका

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

यह भी काम करता है। : डी – user3165474

संबंधित मुद्दे