SQL查询中`plArea`始终为0的原因及解决方法
在这个SQL查询中,当unitCode等于'PL'时,会将ipd.id的值赋给plArea,否则将值赋为0。同样的逻辑也适用于csArea和eaArea。
然而,在这个查询中,使用了GROUP BY子句对ipd.itemCode进行分组。这意味着对于每个唯一的itemCode值,只会选择一个ipd.id值作为结果。如果ipd.unitCode不是'PL',则会将plArea的值设置为0。因此,当存在多个unitCode值时,只会选择其中一个作为结果,而其他的unitCode对应的plArea值都会是0。
如果想要输出每个itemCode对应的所有unitCode的id值,可以使用以下查询:
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对应的所有unitCode的id值,包括unitCode为'PL'的情况。
原文地址: https://www.cveoy.top/t/topic/o6km 著作权归作者所有。请勿转载和采集!