SQL PIVOT:一对多

use*_*474 5 sql sql-server pivot

我在SQL中有2个表.

dbo.main

|id | mid | tid 
 1    yes    no
Run Code Online (Sandbox Code Playgroud)

dbo.external

| id | type | element |
  1    c        9
  1    d        10
  1    h        11
  1    g        12
Run Code Online (Sandbox Code Playgroud)

我试图实现的是:

| id | mid | tid | c | d | h | g  |
  1    yes    no   9  10  11   12
Run Code Online (Sandbox Code Playgroud)

我尝试在dbo.external statment上使用pivot作为

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

问题是:如何在一个sql语句中转动dbo.external然后加入dbo.main?

Pரத*_*ீப் 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 
Run Code Online (Sandbox Code Playgroud)