列显示每个计数
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
我正在尝试 运行 查询以根据时间戳年复一年地计算记录。这是我目前的查询:
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