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