嗨我有一个列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
答案 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