2017-03-20 24 views
2

下面是一個例子表,我有SQL語句列變換表頭

CustomerName|Items customer 1 |Item 1 customer 1 |Item 2 customer 1 |Item 3 customer 2 |Item 1 customer 2 |Item 4 customer 3 |Item 2 customer 4 |Item 5 customer 5 |Item 6

我需要的表變換到

CustomerName|Item 1|Item 2|Item 3|Item 4|Item 5|Item 6| customer 1 | X | X | X | | | | customer 2 | X | | | X | | | customer 3 | | X | | X | | | customer 4 | | | | | X | | customer 5 | | | | | | X |

我試圖PIVOT,在SAP HANA不起作用。

任何建議將不勝感激。

+0

只有'6'項目或者可能有更多。在這種情況下,你想在表中添加很多列嗎? – Utsav

+0

可能有成百上千的Items :)它只是一個例子。 – Sai

+1

請參閱http://stackoverflow.com/questions/7674786/mysql-pivot-table。 – Tom

回答

0

好吧,試試這個:

SELECT CustomerName, 
    MAX(CASE WHEN ROWN=1 THEN "Items" ELSE NULL END) AS Item1, 
    MAX(CASE WHEN ROWN=2 THEN "Items" ELSE NULL END) AS Item2, 
    MAX(CASE WHEN ROWN=3 THEN "Items" ELSE NULL END) AS Item3, 
    MAX(CASE WHEN ROWN=4 THEN "Items" ELSE NULL END) AS Item4, 
    MAX(CASE WHEN ROWN=5 THEN "Items" ELSE NULL END) AS Item5, 
    MAX(CASE WHEN ROWN=6 THEN "Items" ELSE NULL END) AS Item6, 
FROM 
    (SELECT CustomerName, Items, 
      row_number() over (PARTITION BY CustomerName) AS ROWN 
FROM TABLE_NAME ORDER BY CustomerName) 
       GROUP BY CustomerName; 

其中table_name是你的源表的名稱。

+0

它沒有幫助。抱歉! – Sai

0

SAP HANA不提供可在其他DBMS中找到的非標準SQL運算符「PIVOT」。 對於永久轉換,例如在ETL期間,您可以使用流圖函數PIVOT/UNPIVOT自動執行轉換。

對於實時轉換,沒有內置功能,您必須自己編寫代碼。