Sql server 从列中选择值并使其像字段一样工作

Sql server 从列中选择值并使其像字段一样工作,sql-server,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 但是我希望状态示例unsuccessful中的值显示为字段根据注释中的要求进行更改。 据我所知,您需要查询提供四列:年、月、NumberOfWi

我在做图表,我需要选择

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

但是我希望状态示例unsuccessful中的值显示为字段

根据注释中的要求进行更改。

据我所知,您需要查询提供四列:年、月、NumberOfWins、NumberOfFails

因此,按年份和月份分组是必要的。对于每年和每月的组合,您需要知道状态为空的行数和状态为“赢”的行数

请验证此查询是否符合您的需要:

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
选择
年(日期)为年,
月份(日期)作为月份,
当NumberOfFails时,求和(状态为NULL时为1,否则为0结束),
以NumberOfWins的形式求和(状态为'Won'时为1,否则为0结束)
从…起
其中status='Won'
或状态为空
分组
年(日)、月(日)
订购人
年,月
请注意,
WHERE
条件只有在有大量行与两个条件都不匹配时才是必需的(我不确定SQL Server是否能够对其进行优化)

我还添加了
orderby
子句,因为您可能希望在图表中对数据进行排序


我还假设,写“月”实际上是指年和月。如果不是这样,只需从查询中删除与年份相关的语句。

输出结果集中需要哪些列?如果我希望每个结果的成功和失败都像字段一样,这个问题我不理解。请扩展您的原始问题,并提供有关您想要实现的目标的更多信息。您知道我想要创建一个图表,在我想要显示的图表中,每月成功投标和未成功投标的数量,因此我需要将成功和成功作为一个字段来表示。请检查更改后的答案是否适合您的需要。