私は次のようなクエリを持っています。それはcte
を使用しています。そのカウントに行が存在しないにもかかわらず、左結合のカウント1が返されますか?
SELECT d.hour,
hourkey,
range,
COUNT(*) as 'count'
FROM dimhour d
LEFT JOIN cte2
ON d.hour = cte2.hourkey
AND range IS NOT NULL
WHERE d.hour <= 23
GROUP BY d.hour,
hourkey,
range
ORDER BY d.hour DESC
これは、このクエリの結果である:cte2
の
hour hourkey range count
18 NULL NULL 1
17 NULL NULL 1
16 NULL NULL 1
15 15 99% 15
14 14 99% 15
13 13 99% 15
12 12 99% 15
11 11 99% 15
10 10 99% 15
結果はここに投稿するには大きすぎるが、私はcte2.hourkey
がある時間ことを伝えることができnull
cte2
内に1つの行がありません。 Hr15の後にcount(*)
の正の数を返す可能性のあるものは何もありません。しかし、count(*)
は何とかそれらのために1を返します。
なぜこのクエリは存在しない時間にcount(*)
を1に戻しますか?どのように削除できますか?
'count(cte2.hourkey)'を試してください。 – Kateract
「0」が返されますが、その行はまだ結果に表示されています。そして私はそれらを取り除く方法を知らない。 – rbhat
次に、ヌル値を表示したくない場合や、間違ってしまった場合は、 'inner'ジョインを使用してください。 – Sherlock