[英]How do i transpose and grouping in PL/SQL [ORACLE]
我有這張桌子:
SELECT
USER,
DEP
FROM Table_1;
用戶 | 環保署 |
---|---|
用戶1 | DEP1 |
用戶2 | DEP2 |
用戶3 | DEP2 |
用戶4 | DEP3 |
但我想轉置它並在DEP
下對用戶進行分組。
DEP1 | DEP2 | DEP3 |
---|---|---|
用戶1 | 用戶2 | 用戶4 |
用戶3 | NULL | NULL |
我在 pivot 查詢之后嘗試了什么。
SELECT *
FROM
(
SELECT
USER,
DEP
FROM Table_1
) AS NewTable
PIVOT
(
MAX(USER)
FOR DEP IN ([DEP1],[DEP2],[DEP3])
) AS pvt;
output 是: 00933. 00000 - "SQL command not properly ended"
。
如何正確使用PIVOT
?
您可以給每個DEP
類型一個行號,然后是 pivot:
SELECT dep1,
dep2,
dep3
FROM (
SELECT "USER",
dep,
ROW_NUMBER() OVER ( PARTITION BY dep ORDER BY ROWNUM ) AS rn
FROM table_1
)
PIVOT (
MAX( "USER" )
FOR DEP IN (
'DEP1' AS dep1,
'DEP2' AS dep2,
'DEP3' AS dep3
)
)
ORDER BY rn
其中,對於樣本數據:
CREATE TABLE table_1 ( "USER", DEP ) AS
SELECT 'USER1', 'DEP1' FROM DUAL UNION ALL
SELECT 'USER2', 'DEP2' FROM DUAL UNION ALL
SELECT 'USER3', 'DEP2' FROM DUAL UNION ALL
SELECT 'USER4', 'DEP3' FROM DUAL;
輸出:
DEP1 | DEP2 | DEP3:---- |:---- |:---- USER1 | 用戶2 | USER4 null | 用戶3 | null
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.