如何在一個 oracle sql 中轉換更多行?
例子:
Create table EMP(
emp_id number,
emp number,
code number,
date_start date,
date_end date
)
Insert into EMP (emp_id,emp,code,date_start,date_end) VALUES (1,100,1,sysdate,sysdate 1/24);
Insert into EMP (emp_id,emp,code,date_start,date_end) VALUES (2,100,1,sysdate,sysdate 1/24);
Insert into EMP (emp_id,emp,code,date_start,date_end) VALUES (3,100,2,sysdate,sysdate 1/24);
Insert into EMP (emp_id,emp,code,date_start,date_end) VALUES (4,100,1,sysdate,sysdate 1/24);
如何獲得結果:
EMP CODE_1 CODE_2
----------------------------------
100 3 (hours) 1 (hours)
3 小時是 date_end - date_start
uj5u.com熱心網友回復:
您可以使用PIVOT:
SELECT *
FROM (SELECT emp, code, 24 * (date_end - date_start) AS hours FROM emp)
PIVOT (
SUM(hours) FOR code IN (
1 AS code_1,
2 AS code_2
)
);
或條件聚合:
SELECT emp,
SUM(CASE code WHEN 1 THEN 24 * (date_end - date_start) END) AS code_1,
SUM(CASE code WHEN 2 THEN 24 * (date_end - date_start) END) AS code_2
FROM emp
GROUP BY emp;
其中,對于樣本資料,兩者都輸出:
電磁脈沖 CODE_1 CODE_2 100 3 1
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442077.html
