在項目開發中,我們遇到下面的情況:
實際查詢的數據是
而我們實際想要的是
如何通過sql來實現上面遇到的情況呢?
答案:可以使用oracle的pivot這個關鍵字。
語法:
select * from (tableName pivot ( max(作為值的列) for 作為列的列 in (作為列的列的所有值)));
根據圖中的的例子
select * from ((select 名稱,數值 from tableName where 1=1 ) pivot ( max(數值) for 名稱 in ( '砂罐有效容積' as 系數_砂罐有效容積, '回收單罐有效時間' as 系數_回收單罐有效時間, '折算距離' as 系數_折算距離, '打平衡(壓裂車1400)' as 系數_打平衡壓裂車1400, '打平衡' as 系數_打平衡, '吊裝單罐有效時間' as 系數_吊裝單罐有效時間, '能耗系數' as 系數_能耗系數, '單段橋塞泵送射孔有效時間' as 系數_單段橋塞泵送射孔有效時間, '吊車數量' as 系數_吊車數量, '單工作日施工段數' as 系數_單工作日施工段數, '單根高壓管線有效拆卸時間' as 系數_單根高壓管線有效拆卸時間, '試壓有效時間' as 系數_試壓有效時間, '單台主壓車排空有效時間' as 系數_單台主壓車排空有效時間, '單管排空有效時間' as 系數_單管排空有效時間, '酸罐有效容積' as 系數_酸罐有效容積, '單根高壓管線有效鏈接時間' as 系數_單根高壓管線有效鏈接時間, '單管線通過最大標准排量' as 系數_單管線通過最大標准排量, '生產時效' as 系數_生產時效, '擺車時間' as 系數_擺車時間, '液罐有效容積' as 系數_液罐有效容積 ) ) );