Sql 语句将列转换为 table header
Sql statement to transform a column to table header
这是我的一个例子table
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
我需要将 table 转换为
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 中它不起作用。
如有任何建议,我们将不胜感激。
好的,试试这个:
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 是您的来源名称 table。
SAP HANA 不提供可在其他 DBMS 中找到的非标准 SQL 运算符 "PIVOT"。
对于永久转换,例如在 ETL 期间,您可以使用流程图函数 PIVOT/UNPIVOT 自动执行转换。
对于即时转换,没有内置功能,您必须自己编写代码。
这是我的一个例子table
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
我需要将 table 转换为
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 中它不起作用。
如有任何建议,我们将不胜感激。
好的,试试这个:
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 是您的来源名称 table。
SAP HANA 不提供可在其他 DBMS 中找到的非标准 SQL 运算符 "PIVOT"。 对于永久转换,例如在 ETL 期间,您可以使用流程图函数 PIVOT/UNPIVOT 自动执行转换。
对于即时转换,没有内置功能,您必须自己编写代码。