我正在尝试运行查询以根据年度时间戳计算记录。这是我目前的查询:
SELECT plocation AS GROUP_NUMBER, count(DISTINCT UMEMBERID) AS YEAR_ONE
FROM HEALTH_ASSESSMENT
WHERE PUBLICATIONDT > '31-DEC-13'AND PUBLICATIONDT < '01-JAN-15'
GROUP BY PLOCATION
它完全符合我所需的时间框架并显示以下内容:
GROUP_NUMBER | YEAR_ONE
G12345 | 141
G12346 | 61
其中YEAR_ONE
是我列出的日期,基本上是2014年。有没有办法创建一个计算第二个时间范围的附加列?例如,像这样:
GROUP_NUMBER | YEAR_ONE | YEAR_TWO
G12345 | 141 | 92
G12346 | 61 | 57
G12444 | NULL OR BLANK | 16
此处G12444
可能在YEAR_ONE
参数中没有任何记录,但会在YEAR TWO
参数中包含记录。有时这个查询将按月进行,因此也可能需要使用01-JAN-15 - 31-JAN-15
参数设置每个列。
我怎样才能做到这一点?
答案 0 :(得分:1)
您应该可以使用CASE语句执行此操作。这样的事情应该有效:
SELECT plocation AS GROUP_NUMBER
, count(DISTINCT CASE WHEN EXTRACT( YEAR from PUBLICATIONDT) = 2014 THEN UMEMBERID ELSE null END) AS YEAR_ONE
, count(DISTINCT CASE WHEN EXTRACT( YEAR from PUBLICATIONDT) = 2015 THEN UMEMBERID ELSE null END) AS YEAR_two
FROM HEALTH_ASSESSMENT
WHERE EXTRACT( YEAR from PUBLICATIONDT) BETWEEN 2014 and 2015
GROUP BY PLOCATION