如何获取SQL中不同列中不同值的计数

如何获取SQL中不同列中不同值的计数,sql,sql-server,oracle,Sql,Sql Server,Oracle,我有一张如下的图表 +----------------------------------------------------------+ | ID | REGION | STATUS | CLOSED_DT |HEALTH | Open_DT | +----------------------------------------------------------+ | 1 | QA | open | - | red | 2016-01-03

我有一张如下的图表

+----------------------------------------------------------+
|  ID | REGION | STATUS | CLOSED_DT |HEALTH  | Open_DT     |
+----------------------------------------------------------+
|   1 | QA     | open   |  -        |  red   | 2016-01-03  |
|   2 | QA     | open   |  -        | green  | 2015-03-03  |
|   3 | QA     | open   |  -        | orange | 2016-02-03  |
|   4 | QA     | open   |  -        | red    | 2016-01-03  |
|   5 | x      | closed |  16-03-03 | green  | 2015-06-03  |
|   6 | Req    | open   |  -        | orange | 2015-05-03  |
|   7 | x      | closed |  16-02-02 | green  | 2015-05-03  |
+----------------------------------------------------------+
我想显示三个图表-条形图,饼图,月份趋势图。第一个图表要求对打开状态的不同区域进行计数

选择区域,从状态为“打开”的图表中按区域分组,将(*)计为总计

我对条形图使用了上面的查询。对于饼图,我使用了下面的查询

选择“运行状况”,从状态为“打开”的图表中按运行状况分组,将(*)计算为总计


下一个是月份图表,我需要显示过去12个月的月份,例如从1月到12月,我需要每个月的开放和关闭数量。如何构建查询框架,以获取从当前日期算起的过去十二个月的未结和已结状态计数。另外,是否有任何方法可以使用单个查询,而不是对每个图表执行三个不同的查询。我需要查询Oracle和Mssql,您应该使用条件聚合:

SELECT to_char(Open_DT,'YYYY') as yearCol, to_char(Open_DT,'MM') as MonthCol,
       count(CASE WHEN status = 'open' then 1 end) as openCnt,
       count(CASE WHEN status = 'closed' then 1 end) as closeCnt
FROM YourTable
WHERE Open_DT >= add_months(sysdate,-13) 
GROUP BY to_char(Open_DT,'YYYY'),to_char(Open_DT,'MM')
您同时标记了sql server和oracle,上面的解决方案是针对oracle的

对于sql server:

SELECT year(Open_DT) as yearCol, month(Open_DT) as MonthCol,
       count(CASE WHEN status = 'open' then 1 end) as openCnt,
       count(CASE WHEN status = 'closed' then 1 end) as closeCnt
FROM YourTable
WHERE Open_DT > DATEADD(month,-13,getdate())
GROUP BY year(Open_DT),month(Open_DT)

您应该用实际使用的数据库标记一个问题。为什么您同时需要Oracle和SQL Server?实际上我正在使用Oracle和mssql。我需要为oracle和mssql中的数据显示图表。这就是为什么两者都加了标签。对于2个系统,我需要显示chartsHow以获取从今天开始的最后13个月的数据,然后在查询中使用它。因此,对于每个图表,使用单独的查询更好还是使用单个查询更好?这取决于很多事情,但是的,我相信对每个图表使用单独的查询更好@他是个很有魅力的人。以上查询工作正常。但假设我在一个月内(13个月内)没有任何数据,例如,在2015年12月,我没有任何打开和关闭的事件,我应该得到2015年12月的打开和关闭计数为零。但是上面的问题我没有得到12月份的数据,有没有办法得到这些数据?