sql - 根据大于子句更新 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
。如果不是,那么它应该继续显示 3 in QOHQTY
。
我一直希望IF
在临时表中同时使用这两个语句,但我试图避免这种情况。同样,我发现了一个WHERE
可能有效的 CASE 语句,例如下面的这个例子。
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所评论的那样,您想safetystockqty
与qohqty
? 然后:
SELECT
itemno,
CASE WHEN safetystockqty > qohqty THEN 0 ELSE qohqty END qohqty,
safetystockqty
FROM EDI846OutboundDetail WITH (NOLOCK)
WHERE partnerid = '987654321' AND itemno = '123465'`
推荐阅读
- ios - 点击用户通知直接进入特定视图
- json - Using multiple anyOf inside oneOf
- spring-boot - 添加新的视图解析器
- github - 如何查询github上的高级问题处理(里程碑和项目的使用)?
- javascript - *ngif 第一次点击后不工作。角 6
- nodes - 如果两个 geth 客户端(在两台不同的机器上)在主网中使用相同的 nodekey 文件(节点 ID)运行会发生什么?
- yii2 - Yii2-如何通过重定向传递模型ID
- cassandra - Cassandra 简单的主键查询
- javascript - 从日期属性中具有最新值的数组中获取对象?
- android-ndk - 编译器(clang,android ndk r18)找不到 stl_algobase.h