gpt4 book ai didi

tsql - 如何改进使用两列的case语句

转载 作者:行者123 更新时间:2023-12-03 09:03:20 25 4
gpt4 key购买 nike

我有一个名为Purchase的表,该表具有State列,其中1被授权,2已完成(还有一些其他值)。

我也有一个Retailer表,其中有一个RetailerProcessType列,其中1是一步,而2是两步。

我有以下查询:

CASE purc.State
WHEN 1 THEN '"AUTHORISED"'
WHEN 2 THEN '"AUTHORISED"'
WHEN 4 THEN '"AUTHORISED"'
ELSE '"DECLINED"'
END
AS Autorised_Decline_Status,

但是我需要做的如下:

WHEN STATE = 2 AND RetailerProcessType = 1 THEN '"AUTHORISED"'
WHEN STATE = 1 AND RetailerProcessType = 2 THEN '"PENDING"'
WHEN STATE = 2 AND RetailerProcessType = 2 THEN '"AUTHORISED"'
ELSE '"DECLINED"'

我能想到的唯一方法是在查询周围放置一个庞大的 IF语句,一个语句用于单步零售商,另一个语句用于两步零售商,因为我的理解是 WHEN子句中不能包含 AND

然而,这似乎是漫长的。有人有更整洁的主意吗?

最佳答案

您可以这样进行:

-- Notice how STATE got moved inside the condition:
CASE WHEN STATE = 2 AND RetailerProcessType IN (1, 2) THEN '"AUTHORISED"'
WHEN STATE = 1 AND RetailerProcessType = 2 THEN '"PENDING"'
ELSE '"DECLINED"'
END

您可以在此处执行 AND的原因是,您没有检查 CASESTATE,而是您处于CASING条件。

这里的关键部分是 STATE条件是 WHEN的一部分。

关于tsql - 如何改进使用两列的case语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com