我正在运行SQL Server 2014,并且我有以下T-SQL查询:
SELECT a.ResaID,
b.[Market Final],
(CASE
WHEN b.[Market FINAL] = 'Overbooking' AND b.[TAPRofileID3] IS NOT NULL
THEN b.[Overbooking Market Classification]
ELSE b.[Market FINAL]
END) AS 'Market Re-Classified'
当我运行此查询时,我得到以下输出:
ResaID Market Final Market Re-Classified
102 Overbooking NULL
251 Overbooking France
680 Overbooking Germany
我无法理解为什么我的ResaID 102为NULL。我期待" Overbooking"因为我的ELSE
条件的输出声明如果TAProfileID3为NULL,那么它应该返回市场决赛。
如何重新编写代码以维护此逻辑?
答案 0 :(得分:1)
THEN b.[Overbooking Market Classification]
或
WHEN b.[Market FINAL] = 'Overbooking' AND b.[TAPRofileID3] IS NOT NULL
失败并b.[Market FINAL]
可以包含null
或
并且对于这些列,您可以使用
coalesce(youcolumn, 'your_default_value');
答案 1 :(得分:0)
很可能b。[超额预订市场分类]为空。我之前有过这个问题,只需按照TAPR的相同方式添加它,应该是好的。你正在使用3个字段,只检查2是否为空。
答案 2 :(得分:0)
我之前遇到过Null这个词被放入字段的地方,并且在检查空值方面根本不是NULL。通过查询来检查您的记录:
select * from tableb where resaid = 102 and [market re-classified] = 'null'