Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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_Pivot - Fatal编程技术网

使用计数的SQL透视

使用计数的SQL透视,sql,oracle,pivot,Sql,Oracle,Pivot,我有一个表,其中包含以下条目 ID | column | value ------------------------ 1 | status | DONE 2 | status | FAILED 1 | progress | Green 2 | progress | Red 我希望输出为 ID | DONE | FAILED | GREEN | RED 1 | 1 | 0 | 1 | 0 2 | 0 | 1 | 0 | 1

我有一个表,其中包含以下条目

ID | column   | value
------------------------
1  | status   | DONE
2  | status   | FAILED
1  | progress | Green
2  | progress | Red
我希望输出为

ID | DONE | FAILED | GREEN | RED
1  | 1    | 0      | 1     | 0
2  | 0    | 1      | 0     | 1

请告诉我这个问题。我尝试了pivot,但没有得到结果。

这里有一个标准pivot查询解决方案,它不使用SQL Server内置的
pivot
功能:

SELECT ID,
    SUM(CASE WHEN value = 'DONE' THEN 1 ELSE 0 END)   AS DONE,
    SUM(CASE WHEN value = 'FAILED' THEN 1 ELSE 0 END) AS FAILED,
    SUM(CASE WHEN value = 'Green' THEN 1 ELSE 0 END)  AS GREEN,
    SUM(CASE WHEN value = 'Red' THEN 1 ELSE 0 END)    AS RED
FROM yourTable
GROUP BY ID

下面是一个标准的pivot查询解决方案,它不使用SQL Server内置的
pivot
功能:

SELECT ID,
    SUM(CASE WHEN value = 'DONE' THEN 1 ELSE 0 END)   AS DONE,
    SUM(CASE WHEN value = 'FAILED' THEN 1 ELSE 0 END) AS FAILED,
    SUM(CASE WHEN value = 'Green' THEN 1 ELSE 0 END)  AS GREEN,
    SUM(CASE WHEN value = 'Red' THEN 1 ELSE 0 END)    AS RED
FROM yourTable
GROUP BY ID

从clauseSELECT KEY\u VALUE中缺少
,SUM(值为'DONE'时的CASE,然后1 ELSE 0 END)为'DONE',SUM(值为'FAILED'时的CASE,然后1 ELSE 0 END)为'FAILED',SUM(值为'GREEN'时的CASE,然后1 ELSE 0 END)为'GREEN',SUM(值为'RED时的CASE,然后1 ELSE 0 END)作为表\u NAME中的“红色”,其中METRIC\u NAME='METRIC\u NAME'按键\u值分组;这给了我错误ORA-00923:FROM关键字未找到预期的00923。00000-“未在预期位置找到来自关键字”*原因:*操作:第56行错误列:58我认为此查询正常。你确定你抄对了吗?你在开玩笑吗?你说你在使用Oracle。有人能澄清一下吗,如果我遗漏了什么吗?从
clause中遗漏了
,选择KEY\u值,SUM(值为'DONE'时的CASE,然后1个ELSE 0 END)为'DONE',SUM(值为'GREEN'时的CASE,然后1个ELSE 0 END)为'FAILED',SUM(值为'GREEN'时的CASE,然后1个ELSE 0 END)为'GREEN',SUM(当值='RED'然后1 ELSE 0 END时的情况)作为表\u NAME where METRIC\u NAME='METRIC\u NAME'中的'RED'按键\u值分组;这给了我错误ORA-00923:FROM关键字未找到预期的位置00923.00000-“FROM关键字未找到预期的位置”*原因:*操作:第56行错误第58列:我觉得这个查询看起来没问题。你确定你复制的正确吗?你在开玩笑吗?你说你在使用Oracle。有人能澄清一下吗,如果我遗漏了什么?你应该发布一些你已经完成的进度,以便我们可以提供帮助。如果你真的在使用Oracle,为什么要标记SQL Server?你应该ld发布您已经取得的一些进展,以便我们提供帮助。如果您实际使用Oracle,为什么要标记SQL Server?