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
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;