我正在这里发表我的第一篇文章,因为我自己找不到解决办法。我几乎没有编程/ sql / oracle知识,但我偶尔会使用(我相信)Oracle数据库。
我想要完成的是获取查询结果并为每个COUNT()提供自己的列。这样做的原因是为Web应用程序生成报告。我需要将结果填充到自己的列中,以便为报表设计器解析字段。
我的查询如下所示:
SELECT ISSUE,
COUNT(ISSUE) AS ISSUE_COUNT
FROM ISSUE_TABLE
WHERE TIME >TO_DATE('08/10/2017 00:00:00','MM/DD/YYYY HH24:MI:SS')
AND TIME <TO_DATE('08/11/2017 00:00:00','MM/DD/YYYY HH24:MI:SS')
GROUP BY ISSUE
这将返回如下结果:
ISSUE | ISSUE_COUNT
------------------------
A | 30
B | 4
C | 24
D | 17
我最终想要的是:
ISSUE | A | B | C | D |
----------------------------------
ISSUE_COUNT | 30 | 4 | 24 | 17 |
我需要确保每个ISSUE_COUNT在其自己的列中是唯一的,否则报表应用程序将不会解析在运行报表时显示的结果。我想过使用PIVOT,但没有找到任何使用COUNT()或SUM()的解决方案。
答案 0 :(得分:0)
您需要使用PIVOT
子句。试试这个问题:
SELECT *
FROM
(SELECT ISSUE,
COUNT(ISSUE) AS ISSUE_COUNT
FROM ISSUE_TABLE
WHERE TIME >TO_DATE('08/10/2017 00:00:00','MM/DD/YYYY HH24:MI:SS')
AND TIME <TO_DATE('08/11/2017 00:00:00','MM/DD/YYYY HH24:MI:SS')
GROUP BY ISSUE
)PIVOT (SUM(ISSUE_COUNT) FOR ISSUE IN ('A','B','C','D'))