none
資料置轉 RRS feed

  • 問題

  • 請問....

    sql 有沒有指令可以做到像excel 的置轉功能,

    我試過 unpovit 出來的結果.只會有一個直向值,無法做到兩個直向值...

    我希望的結果如下:

    PS:若張貼內容不符主題煩請告知,謝謝~~

    2015年9月23日 上午 09:27

解答

所有回覆

  • T-SQL has pivot operator, books online has detailed syntax and sample code.
    2015年9月23日 下午 01:09
  • pivot 能做到直轉橫.似乎無法達到橫轉直
    2015年9月25日 下午 04:20
  • 或許你可以參考這篇討論所提的方法,利用CROSS APPLY來達到多欄位的轉置。

    http://stackoverflow.com/questions/18617243/sql-unpivot-multiple-columns-data


    | SQL PASS Taiwan Page | SQL PASS Taiwan Group

    | My Blog

    • 已標示為解答 Lin_Chen 2015年10月1日 上午 07:33
    2015年9月30日 上午 01:31
    版主
  • 感謝您,

    雖然最後不是使用 cross apply,但是它的例子讓我學到了另一種方式,

    最後我是使用類似樞紐表的方式去結合產生我要的顯示格式。

    2015年10月1日 上午 07:37
  • 或許你可以把你的做法貼上來跟大家分享,好讓未來遇到類似問題的朋友也可以參考,謝謝。

    | SQL PASS Taiwan Page | SQL PASS Taiwan Group

    | My Blog

    2015年10月1日 上午 07:40
    版主
  • 獻醜了...因為實際上的table 是多個計算合成要的數值,所以寫個大致上操作的方式

    先union 空的框架出我要的顯示,再去塞數值給它。

    作法如下....

    Select a. sale_name,

     Case a.sale_name when saleA then table1.Aqty when saleB then table1.Bqty
          when saleC then table1.Cqty when saleD then table1.Dqty  AS Y2011,

        Case a.sale_name when saleA then table2.Aqty when saleB then table2.Bqty
          when saleC then table2.Cqty when saleD then table2.Dqty  AS Y2012
    From
    (
     SELECT saleA as sale_name, '2011' ,'2012'
        union all
     SELECT saleB, '2011' ,'2012'
        union all
     SELECT saleC, '2011' ,'2012'
        union all
     SELECT saleD, '2011' ,'2012'
     ) a
    Left join table1 on table1.year=a.2011
    Left join table2 on table2.year=a.2012

    2015年10月7日 上午 01:34