如何按日期分组为季度

时间:2016-04-27 15:55:11

标签: sql oracle oracle11g

嗨我有一个列ID和DATES的表我想创建另一个按季度存储日期的列。

例如

ID   DATES

123  5/1/2005
123  7/1/2001
123  4/1/2003
123  2/1/2002
123  6/1/2005
123  6/1/2004

预期产出:

ID   DATES     QUATER

123  5/1/2005  Q2-2005
123  7/1/2001  Q3-2001
123  4/1/2003  Q2-2003
123  2/1/2002  Q1-2002
123  6/1/2005  Q2-2005
123  6/1/2004  Q2-2004

1 个答案:

答案 0 :(得分:1)

您可以使用to_char()执行此操作,如下所示:

with sample_data as (select 123 id, to_date('05/01/2005', 'mm/dd/yyyy') dt from dual union all
                     select 123 id, to_date('07/01/2001', 'mm/dd/yyyy') dt from dual union all
                     select 123 id, to_date('04/01/2003', 'mm/dd/yyyy') dt from dual union all
                     select 123 id, to_date('02/01/2002', 'mm/dd/yyyy') dt from dual union all
                     select 123 id, to_date('06/01/2005', 'mm/dd/yyyy') dt from dual union all
                     select 123 id, to_date('06/01/2004', 'mm/dd/yyyy') dt from dual)
---- end of mimicking a table called sample_data that has your input data in it. See SQL below:
select id,
       dt,
       TO_CHAR(sd.dt, '"Q"q-yyyy') qtr
from   sample_data sd;

        ID DT         QTR    
---------- ---------- -------
       123 05/01/2004 Q2-2005
       123 07/01/2001 Q3-2001
       123 04/01/2003 Q2-2003
       123 02/01/2002 Q1-2002
       123 06/01/2005 Q2-2005
       123 06/01/2004 Q2-2004