试图获取计数结果并给他们自己的列

时间:2017-08-15 02:39:39

标签: oracle

我正在这里发表我的第一篇文章,因为我自己找不到解决办法。我几乎没有编程/ 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()的解决方案。

1 个答案:

答案 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'))