我有一个表,其中包含有关机器运行时间的信息。
这是表格的样子:
日期表是固定的。 (基于搜索条件日期期限):
MachineCODE DATE RUNNING
-----------------------------
CNC001 2019-01-04 10
CNC001 2019-02-04 10
CNC002 2019-02-04 20
CNC003 2019-04-04 5
CNC004 2019-05-04 5
是否有可能获得这样的输出:
Itemcode 01/04/2019 02/04/2019 03/04/2019 04/04/2019 05/04/2019
-------------------------------------------------------------------------
CNC001 10 10
CNC002 20
CNC003 5
CNC004 5
但是在Google进行了一些研究之后,我发现可以使用数据透视表...您能帮忙吗?
答案 0 :(得分:1)
使用PIVOT
:
Oracle设置:
CREATE TABLE table_name ( MachineCODE, "DATE", RUNNING ) AS
SELECT 'CNC001', DATE '2019-01-04', 10 FROM DUAL UNION ALL
SELECT 'CNC001', DATE '2019-02-04', 10 FROM DUAL UNION ALL
SELECT 'CNC002', DATE '2019-02-04', 20 FROM DUAL UNION ALL
SELECT 'CNC003', DATE '2019-04-04', 5 FROM DUAL UNION ALL
SELECT 'CNC004', DATE '2019-05-04', 5 FROM DUAL
查询:
SELECT *
FROM table_name
PIVOT ( MAX( RUNNING ) FOR "DATE" IN (
DATE '2019-01-04' AS "2019-01-04",
DATE '2019-02-04' AS "2019-02-04",
DATE '2019-03-04' AS "2019-03-04",
DATE '2019-04-04' AS "2019-04-04",
DATE '2019-05-04' AS "2019-05-04"
) )
输出:
MACHINECODE | 2019-01-04 | 2019-02-04 | 2019-03-04 | 2019-04-04 | 2019-05-04 :---------- | ---------: | ---------: | ---------: | ---------: | ---------: CNC001 | 10 | 10 | null | null | null CNC002 | null | 20 | null | null | null CNC003 | null | null | null | 5 | null CNC004 | null | null | null | null | 5
db <>提琴here