使用计数的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?