Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 列显示每个计数_Sql_Oracle_Multiple Columns - Fatal编程技术网

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