SQL PIVOT: Un à plusieurs

J'ai 2 table en SQL.

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 

Ce que j'essaie de réaliser est:

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

j'essaie d'utiliser le pivot sur la déclaration dbo.external comme

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

Le problème est: comment puis-je pivoter dbo.external puis join le dbo.main dans une déclaration SQL?

JOIN simplement la table Main dans la requête source Pivot

 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 
  • SQL FIDDLE DEMO

Utiliser la clause 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;