oracle將多行轉為一行


在項目開發中,我們遇到下面的情況:

 實際查詢的數據是

   

而我們實際想要的是

如何通過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 系數_液罐有效容積
      )
    )
  );

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM