Старый стиль:
Select i.*,
max(decode(prop.PROPERTY_ID,1,prop.VALUE,NULL)) as PROPERTY_ONE,
max(decode(prop.PROPERTY_ID,2,prop.VALUE,NULL)) as PROPERTY_TWO
From ITEM i
Left Join ITEM_PROPERTY prop on i.ITEM_ID = prop.ITEM_D and prop.PROPERTY_ID in(1,2)
group by there_will_have_to_list_all_the_fields_from_ITEM
Or ("свет" версия, менее список в Gorup но может возникнуть проблема с оптимизацией):
Select i.*,prop.PROPERTY_ONE,prop.PROPERTY_TWO
From ITEM i
Left Join (
select ITEM_ID,
max(decode(PROPERTY_ID,1,VALUE,NULL)) as PROPERTY_ONE,
max(decode(PROPERTY_ID,2,VALUE,NULL)) as PROPERTY_TWO
from ITEM_PROPERTY
where PROPERTY_ID in(1,2)
group by ITEM_ID
) prop on i.ITEM_ID = prop.ITEM_D
Новый стиль (Oracle 11g +):
select * from (
Select i.*, prop.PROPERTY_ID, prop1.VALUE
From ITEM i
Left Join ITEM_PROPERTY prop on i.ITEM_ID = prop.ITEM_D and prop.PROPERTY_ID in(1,2)
)
pivot(
max(VALUE) for PROPERTY_ID in(1 as "PROPERTY_ONE",2 as "PROPERTY_TWO")
)
Я думаю, вы делаете то же самое. Почему это? –