ORACLE行转列
工作中遇到的问题,如下图,需要把所有料号的WL属性(WL_单台净重(KG)、WL_单台毛重(KG)、WL_外箱宽(CM)、WL_外箱重量(KG)、WL_外箱重量(KG)、WL_外箱长(CM)、WL_外箱高(CM)、WL_彩盒宽(CM)、WL_彩盒长(CM)、WL_彩盒高(CM)、WL_整板层数(层)、WL_整板数量(台)、WL_整箱数量(台)、WL_栈板宽(CM)、WL_栈板重量(KG)、WL_栈板长(CM)、WL_栈板高(CM)))输出成列显示

ORACLE行转列可以用两种函数decode 、case when then。
select x.part_number,
sum(decode(x.attribute_name, 'WL_单台净重(KG)', x.attribute_value, null)) WL_单台净重,
sum(decode(x.attribute_name, 'WL_单台毛重(KG)', x.attribute_value, null)) WL_单台毛重,
sum(decode(x.attribute_name, 'WL_外箱宽(CM)', x.attribute_value, null)) WL_外箱宽,
sum(decode(x.attribute_name, 'WL_外箱重量(KG)', x.attribute_value, null)) WL_外箱重量,
sum(decode(x.attribute_name, 'WL_外箱长(CM)', x.attribute_value, null)) WL_外箱长,
sum(decode(x.attribute_name, 'WL_外箱高(CM)', x.attribute_value, null)) WL_外箱高,
sum(decode(x.attribute_name, 'WL_彩盒宽(CM)', x.attribute_value, null)) WL_彩盒宽,
sum(decode(x.attribute_name, 'WL_彩盒长(CM)', x.attribute_value, null)) WL_彩盒长,
sum(decode(x.attribute_name, 'WL_彩盒高(CM)', x.attribute_value, null)) WL_彩盒高,
sum(decode(x.attribute_name, 'WL_整板层数(层)', x.attribute_value, null)) WL_整板层数,
sum(decode(x.attribute_name, 'WL_整板数量(台)', x.attribute_value, null)) WL_整板数量,
sum(decode(x.attribute_name, 'WL_整箱数量(台)', x.attribute_value, null)) WL_整箱数量,
sum(decode(x.attribute_name, 'WL_栈板宽(CM)', x.attribute_value, null)) WL_栈板宽,
sum(decode(x.attribute_name, 'WL_栈板重量(KG)', x.attribute_value, null)) WL_栈板重量,
sum(decode(x.attribute_name, 'WL_栈板长(CM)', x.attribute_value, null)) WL_栈板长,
sum(decode(x.attribute_name, 'WL_栈板高(CM)', x.attribute_value, null))
from bitc_plm_maternumber_attribute x
where x.part_number in('1214-01056','1216-00148')
group by x.part_number
0 Comments