列显示每个计数

Column displays each count

我正在尝试 运行 查询以根据时间戳年复一年地计算记录。这是我目前的查询:

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 参数设置每一列。

我怎样才能做到这一点?

您应该可以使用 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