sql - on 子句的 where 条件
问题描述
我需要使用案例条件修改此 sql,如果 serial_number 表有可用的库存标签(serial_number.tag_id = inventory.tag_id),我需要将 qty 填充为“1”,否则需要从查询结果中填充 qty 会怎样是最好的方法吗?
SELECT
* from ( SELECT
inventory.tag_id PalletNumber,
inventory.sku_id sku,
inventory.batch_id batch,
**inventory.qty_on_hand qty,**
inventory.condition_id status,
inventory.user_def_type_1 reasoncode,
serial_number.serial_number serialnumber,
TO_CHAR(inventory.expiry_dstamp, 'YYYY-MM-DD') Expiry_Date,
pre_advice_header.pre_advice_id asn,
pre_advice_header.status asnstatus,
inventory.supplier_id vendor,
TO_CHAR(inventory.receipt_dstamp, 'YYYY-MM-DD') ArrivalDate,
pre_advice_line.host_pre_advice_id PONumber
FROM
inventory
JOIN pre_advice_header ON pre_advice_header.pre_advice_id = inventory.receipt_id
AND pre_advice_header.site_id = inventory.site_id
AND pre_advice_header.client_id = inventory.client_id
AND pre_advice_header.status in ('Complete')
AND pre_advice_header.status is not NULL
LEFT OUTER JOIN pre_advice_line ON pre_advice_line.pre_advice_id = inventory.receipt_id
AND pre_advice_line.sku_id = inventory.sku_id
LEFT JOIN serial_number ON **serial_number.tag_id = inventory.tag_id**
AND serial_number.site_id = inventory.site_id
AND serial_number.client_id = inventory.client_id
AND serial_number.receipt_id = inventory.receipt_id
AND serial_number.sku_id = inventory.sku_id
WHERE
inventory.site_id = 'UK-CBY-04'AND inventory.client_id = 'MLC796'
AND (inventory.condition_id != 'SC1' or inventory.condition_id is null)
AND (inventory.zone_1 <> '80SHP01' or inventory.zone_1 is null)
GROUP BY
inventory.tag_id,
inventory.sku_id,
inventory.batch_id,
inventory.qty_on_hand,
inventory.condition_id,
inventory.user_def_type_1,
serial_number.serial_number,
inventory.expiry_dstamp,
pre_advice_header.pre_advice_id,
pre_advice_header.status,
inventory.supplier_id,
inventory.receipt_dstamp,
pre_advice_line.host_pre_advice_id
ORDER BY
inventory.sku_id DESC,
inventory.tag_id ASC
)
解决方案
使用 CASE 的解决方案如下:
案例当 serial_number.serial_number 不为 NULL THEN 1 ELSE inventory.qty_on_hand END qty
推荐阅读
- excel - VBA - 按数组自动过滤也没有返回大数字
- javascript - discord.js v12 命令参数
- java - 将 JDK 15 添加到 Netbeans 8.2 RC
- sed - 如何使用 SED 在文件中某个复杂字符串之后插入文本
- python - RuntimeError:操作在 f 字符串语句中没有标识
- r - 错误:使用“ifelse”时出现意外的“=”
- http - guzzle 中的 http_errors 有什么用?
- c# - 如果在阻塞代码下方一直使用 .ConfigureAwait(false) ,阻塞异步调用之后的代码是否会在相同的上下文中继续?
- java - 为什么 testng 将属性 a 分配给相同的地址?
- python - 405 方法不允许,添加到购物车烧瓶 python