2016-09-08 4 views
0

問題:クエリでNULLが返される 潜在的な問題:サブクエリが正しくフォーマットされていないため、並べ替えるデータがデータセット内にある場合にのみ機能します。今日のコードのSQLクエリでサブクエリがデータを返さない

例:

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ではなくNULLを取得するのですために「0」を追加しようとしました:

(0 + SELECT SUM(total_working_time_h) FROM {$table} WHERE  production_order = '$production_order' AND (station = '出货检验 | OQC' OR  production_type = 'Rework') 

例データセットをテキストとしてフォーマットさ:

production_order,total_working_time_h_edit 
26135, NULL 

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, 10,45 

私のデータセットは、私が整理したいか、私はすべてを整理したいproduction_typeはそれが必要として動作ステーションを保持する場合。しかし、それらの両方がデータセットにない場合、サブクエリが0を返すため、NULLが返されます。

私が使用している別のデータセットの例です。私がデータセットに緑色のセルでマークされたデータを持っていれば、それは動作します。そうでなければ、上記のようにNULLを返します。

NULLを返さないようにサブクエリを作成するにはどうすればよいですか?質問を自分自身を解決するために管理

Data

+0

WHERE station = '出货检验| OQC''...あなたは駅名の一部としてパイプを使用しようとしていますか?それとも、「出貨査定」と「OQC」を一緒に「OR」すると思いますか? –

+0

パイプは名前の一部です。 '出货检验| OQCは総称であると見なされるべきである。 –

+0

希望の出力と共にサンプルデータを含むテーブルを表示します。ほとんどの場合、クエリには小さな問題があります。 –

答えて

1

問題:それは代わりに0を返すようにすることで

COALESCE(SUM(total_working_time_h),0) 

:次のように追加COALESCE(0)私のサブquerys関数SUMに():サブクエリがNULLの代わりに0

ソリューションを返さSUM()が実際にNULLを返すことを望む場合はNULLを返します。それが私の問題を解決しました。

関連する問題