gpt4 book ai didi

sql - 为组和子组计数

转载 作者:行者123 更新时间:2023-12-01 14:41:42 26 4
gpt4 key购买 nike

我使用 SQL Server 2008。有一个包含项目、状态和日期的表:

ID    Status      Date
1 Gone 21-10-2011
2 Cancelled 01-10-2011
3 Won 02-10-2011
4 Won 07-10-2011
5 Gone 02-01-2010
6 Won 24-01-2010

出于统计目的,我需要一些 T-SQL 查询,结果将返回如下表:

Month    Year    Total    Lost   Won
10 2011 4 2 2
01 2010 2 1 1

地点:

总计是指唯一月-年对的总条目数。

丢失是指状态为“消失”或“已取消”的唯一月-年对的总条目数

Won 表示状态为“Won”的唯一 Month-Year 对的总参赛金额。

我了解如何获取独特的月-年的总金额,但不知道如何在结果集中添加输赢列并获取条目金额。当然,如果月-年对没有任何“获胜”项目并且只有“丢失”,则获胜列的值应该为 0。

最佳答案

SELECT
MONTH([Date]) [Month],
YEAR([Date]) [Year],
COUNT(*) [Total],
COUNT(CASE WHEN Status IN ('Gone', 'Cancelled') THEN 1 END) [Lost],
COUNT(CASE WHEN Status= 'Won' THEN 1 END) [Won]
FROM
MyTable
GROUP BY
MONTH([Date]),
YEAR([Date])

这是有效的,因为 CASE 中的静默 ELSE 给出 NULL,而 COUNT 将忽略它

关于sql - 为组和子组计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com