【问题标题】:How to get count of a particular row如何获取特定行的计数
【发布时间】:2017-04-17 10:50:24
【问题描述】:

我有包含 Id、Date 和 Status 的表,即打开/关闭 我只想要一个包含按月打开、关闭和 Id 总数的 sql 结果 例如一月打开计数 15,关闭计数 5 和总计数 20

【问题讨论】:

  • 提示:GROUP BY.
  • 你能举个例子吗
  • 你使用什么数据库引擎?
  • sql server 引擎
  • 给出你的初始和最终输出数据

标签: sql sql-server database


【解决方案1】:

使用 RollUp() 和 Group By 如下:

;WITH T AS
(
    SELECT
        Id,     
        DATENAME(MONTH,[Date]) AS [MonthName],          
        Status
    FROM @tblTest
)
SELECT
    [MonthName],
    [Status],
    StatusCount
FROM
(
    SELECT
        MonthName,
        CASE ISNULL(Status,'') WHEN '' THEN 'Total' ELSE Status END AS Status,          
        Count(Status) AS StatusCount                        
    FROM T
    GROUP BY ROLLUP([MonthName],[Status])
)X
WHERE X.MonthName IS NOT NULL
ORDER BY X.[MonthName],X.[Status]

输出:

注意:如果需要逐月单行数据,则应用 PIVOT

【讨论】:

【解决方案2】:
select year(date), month(date), 
       sum(case when status = 'open' then 1 else 0 end) as open_count,
       sum(case when status = 'closed' then 1 else 0 end) as closed_count,
       count(*) as total_count
from your_table
group by year(date), month(date)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多