问题:我的查询返回NULL 潜在问题:子查询格式错误,只有在我要整理的某些数据位于数据集中时才有效。
今天的代码示例:
SELECT production_order
,SUM(total_working_time_h) - (SELECT SUM(total_working_time_h) FROM {$table} WHERE production_order = '$production_order' AND (station = '出货检验 | OQC' OR production_type = 'Rework')) AS total_working_time_h_edit
,SUM(no_of_defects) AS no_of_defects_during_production
FROM {$table}
WHERE production_order = '$production_order'
只要我有"返工"和/或"'出货检验| OQC'"在我的数据库中登录此生产订单。如果没有,我根本不会获得任何数据,但只有NULL。所以我的问题是在我的子查询中的某个地方我认为:
SELECT SUM(total_working_time_h) FROM {$table} WHERE production_order = '$production_order' AND (station = '出货检验 | OQC' OR production_type = 'Rework')
我尝试添加" 0"确保它获得0而不是NULL而没有成功,如下所示:
(0 + SELECT SUM(total_working_time_h) FROM {$table} WHERE production_order = '$production_order' AND (station = '出货检验 | OQC' OR production_type = 'Rework')
格式化为示例的数据集:
production_order part_nr station total_working_time_h
26135 129-108816B-UL 压接 | Crimping 1.42
26135 129-108816B 线束组装 | Harness Assembling 7.67
26135 129-108816 测试 | Testing 0.83
26135 129-108816B 外观全检 | Appearance inspection 0.83
给出这个输出:
production_order,total_working_time_h_edit
26135, NULL
我想要这个输出:
production_order,total_working_time_h_edit
26135, 10,45
如果我的数据集保存了我想要整理的工作站,或者我要整理的production_type一切都按预期工作。但是如果数据集中缺少这两个,它返回NULL,因为我认为是因为子查询返回0。
我使用的不同数据集的示例。如果我在数据集中有绿色单元格标记的数据,它将起作用。如果没有,我得到如上所述的返回NULL。
那么如何让我的子查询不返回NULL?
答案 0 :(得分:1)
管理自己解决问题。
问题:子查询返回NULL而不是0。
解决方案:将COALESCE(,0)添加到我的子查询函数SUM()中,如下所示:
COALESCE(SUM(total_working_time_h),0)
通过这样做,当SUM()实际上想要返回NULL时,它返回0而不是NULL。这解决了我的问题。