我有一张包含材料类型的表格:
id type mat_number description count
------------------------------------------------
a mat_1 123456 wood type a 5
a mat_2 333333 plastic type a 8
b mat_1 654321 wood type b 7
c mat_2 444444 plastic type c 11
d mat_1 121212 wood type z 8
d mat_2 444444 plastic type c 2
d mat_2 555555 plastic type d 3
使用SQL我想按如下方式创建列表:
id mat_1 description count mat_2 description count
-------------------------------------------------------------------
a 123456 wood type a 5 333333 plastic type c 8
b 654321 wood type b 7 null
c null 444444 plastic type c 11
d 121212 plastic type c 8 444444 plastic type c 2
d null 555555 plastic type c 3
这可以用枢轴吗?
答案 0 :(得分:1)
不,但你可以通过自我加入
来做到这一点select a.id aId, a.mat_number mat1, a.description aDescrip, a.count aCount,
b.mat_number mat2, b.description aDescrip, b.count bCount
From table a
full join table b
on b.id = a.id
and a.type = mat_1
and b.type = mat_2
答案 1 :(得分:1)
一个人不需要使用" pivot"在查询中实现想要的转换。一些简单的案例表达式和一个分组可以创造奇迹。
select
id
, max(case when type = 'mat_1' then MAT_NUMBER end) as mat_1
, max(case when type = 'mat_1' then DESCRIPTION end) as description_1
, max(case when type = 'mat_1' then COUNT end) as count_1
, max(case when type = 'mat_2' then MAT_NUMBER end) as mat_2
, max(case when type = 'mat_2' then DESCRIPTION end) as description_2
, max(case when type = 'mat_2' then COUNT end) as count_2
from table1
group by
id
order by
id
;