Sql 列显示每个计数
我正在尝试运行一个查询,根据时间戳逐年统计记录。以下是我目前的一个查询:Sql 列显示每个计数,sql,oracle,multiple-columns,Sql,Oracle,Multiple Columns,我正在尝试运行一个查询,根据时间戳逐年统计记录。以下是我目前的一个查询: 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 其中YEAR\u ONE是我列
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
其中YEAR\u ONE
是我列出的日期,基本上是2014年。有没有办法创建一个计算第二个时间帧的附加列?例如,类似这样的内容:
GROUP_NUMBER | YEAR_ONE | YEAR_TWO
G12345 | 141 | 92
G12346 | 61 | 57
G12444 | NULL OR BLANK | 16
此处,G12444
可能在第一年
参数中没有任何记录,但在第二年
参数中会有记录。有时,此查询将按月进行,因此也可能需要使用01-JAN-15-31-JAN-15
的参数设置每个列
我怎样才能做到这一点 您应该能够通过案例陈述来实现这一点。像这样的方法应该会奏效:
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
它应该是
。。。和PUBLICATIONDT<'01-JAN-16'
,因为您在查询中包含了案例年份(PUBLICATIONDT)=2015
。在案例陈述中更新了年份。那么PUBLICATIONDT>'31-DEC-13'
呢?您应该更改where
子句。因为除了2014年,其他年份都被淘汰了。我认为它应该有效。只需等待op回复和+1回复。我想我们快到了!出版物的格式为2014年2月24日下午3:03:37;所以它给了我一个错误,那一年是一个无效的标识符。
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