如何使用带有日期列的数据透视表

时间:2019-07-25 08:58:31

标签: sql oracle oracle12c

我有一个表,其中包含有关机器运行时间的信息。

这是表格的样子:

日期表是固定的。 (基于搜索条件日期期限):

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进行了一些研究之后,我发现可以使用数据透视表...您能帮忙吗?

1 个答案:

答案 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