为什么 COALESCE return NULL 而不是我需要的值?

Why COALESCE return NULL instead of value I need?

从 table tblQuoteStatusChangeLog 我需要检查列 NewQuoteStatusID 是否具有这些值之一(2、25 或 202),并选择最早的时间戳。 所以如果它有值2,则取TimeStamp,如果它没有值2则检查是否有25并取对应的TimeStamp ,如果不是,则检查 202 并选择合适的邮票。

所以从 tblQuoteStatusChangeLog 我需要选择 StatusID 202 的第一行,因为它是唯一符合条件的行。

所以我有这个查询:

SELECT  
      (SELECT        TOP (1) Timestamp
                    FROM            tblQuoteStatusChangeLog
                    WHERE        NewQuoteStatusID = COALESCE (2,25,202)  AND ControlNo = tblQuotes.ControlNo
                    ORDER BY Timestamp DESC) as DateQuoted
FROM tblQuotes
INNER JOIN tblMaxQuoteIDs ON tblQuotes.QuoteID = tblMaxQuoteIDs.MaxQuoteID
where tblQuotes.ControlNo = 50065 

但由于某种原因,我得到了 NULL

我在这里错过了什么? 谢谢

我认为 coalesce() 不是您想要的功能。 coalesce(2, 25, 2002) returns 第一个非 NULL 值,始终为“2”。您的示例数据没有值“2”,所以这就是子查询 returns NULL.

的原因

我想你可能想要 IN:

SELECT (SELECT TOP (1) Timestamp
        FROM tblQuoteStatusChangeLog
        WHERE NewQuoteStatusID IN (2, 25, 202) AND
              ControlNo = tblQuotes.ControlNo
        ORDER BY Timestamp DESC
       )