我喜欢将它作为单个查询来完成,但我认为它需要一个游标。如果我不能将它作为单个查询执行,我想将结果输出为SYS_REFCURSOR。一个简化的例子:
ID NAME Part Number SKU
------------------------------------
1 Widgetizer 150 1001
2 Widgetizer200 200 1002
3 WidgetizerDlx 250 1003
P_ID NAME VALUE
----------------------------
1 WEIGHT 5
1 HEIGHT 10
1 VERSION 1
1 COLOR RED
2 WEIGHT 7
2 HEIGHT 10
2 VERSION 2
2 COLOR BLUE
查询:
对于SKU小于1003的每种产品,请返回:
Product name, part #, SKU, WEIGHT, HEIGHT, COLOR
答案 0 :(得分:5)
通常称为透视查询。
select p.name, p.partnum, p.sku,
max( case when s.name='WEIGHT' then s.value else null end ) weight,
max( case when s.name='HEIGHT' then s.value else null end ) height,
max( case when s.name='COLOR' then s.value else null end ) color
from product p join product_spec s on p.id = s.p_id
where sku <= 1003
group by p.name, p.partnum, p.sku