SQL PIVOT:一对多

SQL PIVOT: One To Many

我在 SQL 中有 2 个 table。

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 语句中使用 pivot 作为

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

问题是: 我怎样才能在一个 sql 语句中转换 dbo.external 然后加入 dbo.main?

只是 JOIN Main table 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 

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