【发布时间】:2021-11-19 12:48:16
【问题描述】:
在ORACLE SQL(ORACLE 19c)中,我正在寻找一种获取下表内容的方法
...类似的结构(分组)如下:
第一列数据必须按以下方式分组:
- 部门
- JOB_START_DATE,如果 JOB_START_DATE 介于“2021-01-01”和“2021-12-31”之间
- JOB_DESCRIPTION(s)
- 姓名
在第二列中,“1”代表人们在 2021 年开始工作的时间
最后,应为每个 DEPARTMENT 组输出(底部)关于在 DEPARTMENT(2021 年)内开始的人员总和的中间结果。
截取代码以生成表格数据:
SELECT 'Zimmer, Hans' AS NAME,
'1978-10-01' AS JOB_START_DATE,
'2021-01-31' AS JOB_END_DATE,
'Movie Composer' AS JOB_DESCRIPTION,
'Score' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Armstrong, Louis' AS NAME,
'1988-06-01' AS JOB_START_DATE,
'2021-06-30' AS JOB_END_DATE,
'Jazz Musician' AS JOB_DESCRIPTION,
'Score' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Davis, Miles' AS NAME,
'2011-10-01' AS JOB_START_DATE,
'2021-03-31' AS JOB_END_DATE,
'Jazz Musician' AS JOB_DESCRIPTION,
'Music' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Coltrane, John' AS NAME,
'2015-08-01' AS JOB_START_DATE,
'2021-06-30' AS JOB_END_DATE,
'Jazz Musician' AS JOB_DESCRIPTION,
'Music' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Cobain, Kurt' AS NAME,
'2021-08-01' AS JOB_START_DATE,
'2022-07-31' AS JOB_END_DATE,
'Rock Musician' AS JOB_DESCRIPTION,
'Music' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Keys, Alicia' AS NAME,
'2021-09-01' AS JOB_START_DATE,
'2022-08-31' AS JOB_END_DATE,
'Pop Musician' AS JOB_DESCRIPTION,
'Music' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Tarantino, Quentin' AS NAME,
'2021-03-01' AS JOB_START_DATE,
'2021-08-31' AS JOB_END_DATE,
'Movie Director' AS JOB_DESCRIPTION,
'Film' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Pitt, Brad' AS NAME,
'1999-10-01' AS JOB_START_DATE,
'2021-01-26' AS JOB_END_DATE,
'Movie Actor' AS JOB_DESCRIPTION,
'Film' AS DEPARTMENT
FROM DUAL
UNION ALL
SELECT 'Nolan, Christopher' AS NAME,
'2020-05-01' AS JOB_START_DATE,
'2021-03-31' AS JOB_END_DATE,
'Movie Director' AS JOB_DESCRIPTION,
'Film' AS DEPARTMENT
FROM DUAL;
在 ORACLE SQL 中是否可以根据需要对表数据进行结构化/分组?
如果是这样,我该如何实现?
【问题讨论】:
-
到目前为止你尝试了什么?
-
我不知道该怎么做才能得到我想要的输出格式。你有什么想法吗?