我在做图表,我需要选择
SELECT Bid
, ID
, date
, CASE
WHEN status IS NULL THEN 'unsuccessful'
WHEN status = 'Won' THEN 'successful'
WHERE status = 'Won'
OR status IS NULL
但我希望状态示例中的值不成功显示为字段
答案 0 :(得分:0)
根据评论中的要求进行更改。
据我了解,您需要查询四列:Year,Month,NumberOfWins,NumberOfFails。
因此,按年和月分组是必要的。对于每个年和月组合,您需要知道status IS NULL
条件为真的行数和行数status = 'Won'
条件为真。
请验证此查询是否符合您的需求:
SELECT
YEAR(date) as Year,
MONTH(date) as Month,
SUM(case when status IS NULL then 1 else 0 end) as NumberOfFails,
SUM(case when status = 'Won' then 1 else 0 end) as NumberOfWins
FROM
<your-table-name-here>
WHERE status = 'Won'
OR status IS NULL
GROUP BY
YEAR(date), MONTH(date)
ORDER BY
Year, Month
请注意,只有当您有足够的行与两个条件都不匹配时才需要WHERE
条件(我不确定SQL Server是否能够对其进行优化)。
我还添加了ORDER BY
子句,因为您可能希望在图表中订购数据。
我还假设,通过写'月',你实际上意味着年月。如果不是这样,只需从查询中删除与年份相关的语句。