在这个SQL查询中,当unitCode等于'PL'时,会将ipd.id的值赋给plArea,否则将值赋为0。同样的逻辑也适用于csAreaeaArea

然而,在这个查询中,使用了GROUP BY子句对ipd.itemCode进行分组。这意味着对于每个唯一的itemCode值,只会选择一个ipd.id值作为结果。如果ipd.unitCode不是'PL',则会将plArea的值设置为0。因此,当存在多个unitCode值时,只会选择其中一个作为结果,而其他的unitCode对应的plArea值都会是0。

如果想要输出每个itemCode对应的所有unitCodeid值,可以使用以下查询:

SELECT
    ipd.id,
    (CASE WHEN ipd.unitCode = 'PL' THEN ipd.id ELSE 0 END) AS plArea,
    (CASE WHEN ipd.unitCode = 'CS' THEN ipd.id ELSE 0 END) AS csArea,
    (CASE WHEN ipd.unitCode = 'EA' THEN ipd.id ELSE 0 END) AS eaArea 
FROM
    item_packing_detail ipd 
WHERE
    itemCode = '000052013' 
    AND unitLength > 0 
    AND unitWidth > 0 
    AND unitHeight > 0

这样就会输出每个itemCode对应的所有unitCodeid值,包括unitCode为'PL'的情况。

SQL查询中`plArea`始终为0的原因及解决方法

原文地址: https://www.cveoy.top/t/topic/o6km 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录