基于大于子句更新 Select 中的值



我正在尝试制作一个SQL报告来识别当前的现有数量。除非应用规则,否则选择中列出的值将在表中显示给定值。

本质上,我需要有关如何编写 IF 语句的帮助。

SELECT itemno
,QOHQTY
,SAFETYSTOCKQTY
FROM EDI846OutboundDetail WITH (NOLOCK)
WHERE PARTNERID = '987654321'
AND itemno = '123465'`

此选择将返回

itemno  QOHQTY      SAFETYSTOCKQTY
123465  3.00000000  12.00000000

但是,由于SAFETYSTOCKQTY大于 3,因此选择应在QOHQTY中返回零。如果不是,那么它应该继续显示 3QOHQTY.

我一直希望在临时表中同时使用IF语句,但我试图避免这种情况。同样,我发现了一个可能有效的WHERECASE 语句,例如下面的示例。

SELECT '1'
FROM EDI846OutboundDetail WITH (NOLOCK)
WHERE CASE WHEN SAFETYSTOCKQTY > 1 THEN '1'
END
and PARTNERID = '987654321'
AND itemno = '123465'

但是,我在如何格式化该代码方面遇到了麻烦。

由于SAFETYSTOCKQTY大于3,那么选择应该在QOHQTY中返回零。如果不是,那么它应该继续显示 3 inQOHQTY.

使用CASE

SELECT 
itemno,
CASE WHEN safetystockqty > 3 THEN 0 ELSE qohqty END qohqty,
safetystockqty
FROM EDI846OutboundDetail WITH (NOLOCK)
WHERE partnerid = '987654321' AND itemno = '123465'`

或者,正如averey_larry所评论的那样,您想将safetystockqtyqohqty的值进行比较?然后:

SELECT 
itemno,
CASE WHEN safetystockqty > qohqty THEN 0 ELSE qohqty END qohqty,
safetystockqty
FROM EDI846OutboundDetail WITH (NOLOCK)
WHERE partnerid = '987654321' AND itemno = '123465'`

最新更新