从列中选择值并使其像字段一样运行

时间:2014-02-05 12:12:53

标签: sql-server

我在做图表,我需要选择

SELECT Bid
 , ID
 , date
 , CASE
     WHEN status IS NULL THEN 'unsuccessful'
     WHEN status = 'Won' THEN 'successful'
WHERE  status = 'Won'
    OR status IS NULL

但我希望状态示例中的值不成功显示为字段

1 个答案:

答案 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子句,因为您可能希望在图表中订购数据。

我还假设,通过写'月',你实际上意味着年月。如果不是这样,只需从查询中删除与年份相关的语句。