【问题标题】:How to display a list of employees joining on a particular date如何显示在特定日期加入的员工列表
【发布时间】:2015-12-23 23:58:54
【问题描述】:

我有一个表 EMPLOYEE,它包含如下数据:

EID       JOB          JOINING_DATE
------    ----          -----------
1          SE         2015-01-01 00:00:00.0
2          SW         2015-01-02 00:00:00.0
3          SD         2015-01-03 00:00:00.0
4          SX         2015-01-04 00:00:00.0
5          SP         2015-01-05 00:00:00.0
6          SV         2015-01-06 00:00:00.0
7          SM         2015-01-07 00:00:00.0
8          SE         2015-01-04 00:00:00.0
9          SW         2015-01-03 00:00:00.0
10         SD         2015-01-01 00:00:00.0
11         SX         2015-01-03 00:00:00.0
12         SP         2015-01-03 00:00:00.0
13         SV         2015-01-02 00:00:00.0
8          SE         2015-01-04 00:00:00.0
9          SW         2015-01-03 00:00:00.0
10         SD         2015-01-01 00:00:00.0
11         SX         2015-01-03 00:00:00.0
12         SP         2015-01-03 00:00:00.0
13         SV         2015-01-02 00:00:00.0

我需要这样输出:

EID     JOB    01-01-15   02-01-15    03-01-15
1        SE      1         0             0
2        SW      0         0             0
.
.
.
13       SV      0         2             0

如何做到这一点?

【问题讨论】:

    标签: oracle oracle11g oracle10g oracle12c


    【解决方案1】:

    请注意以下几点。

    1. 列名不应以数字开头。
    2. 在您的输入数据中,您提到了 7 个不同的日期,但在您的输出中您只提到了 3 个。
    3. 我假设不同员工的开斋节和工作是相同的,否则你的逻辑会失败。

          with tbl1 as(
          select emp.*,
            case when joining_date = to_date('2015-01-01','YYYY-MM-DD') then 1 else 0 end as date_01_01_15,
            case when joining_date = to_date('2015-01-02','YYYY-MM-DD') then 1 else 0 end as date_02_01_15,
            case when joining_date = to_date('2015-01-03','YYYY-MM-DD') then 1 else 0 end as date_03_01_15
          from EMPLOYEE emp) 
      
          select tbl1.eid, tbl1.job,
              sum(date_01_01_15) as date_01_01_15,
              sum(date_02_01_15) as date_02_01_15,
              sum(date_03_01_15) as date_03_01_15 
          from tbl1
          group by tbl1.eid,tbl1.job
      

    注意:我采用的日期格式为 YYYY-MM-DD。您可以根据您的日期格式进行更改。 您也可以扩展 case 和 sum 语句以添加其他列。

    【讨论】:

      猜你喜欢
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多