次のクエリでは、注文があったかどうかにかかわらず、すべての現在/将来の顧客レコードが正しく表示されます。しかし、ステートメントのYesNO
エイリアスは、o.OrderID
がnullの場合(つまり、未来の顧客がまだ注文していない場合)でも常に1を返します。どうして?私は以下のCASE文が正しいと思う(thisレスポンスも同様)。私はSQL Server 2012
を使用しています。 :OrderIDはPKですが、結合条件が満たされていない場合は、OUTER JOINのorders表の他の列と一緒に常にNULLになります。T-SQL CASE句:外部ジョインでWHEN NULLを指定する際の問題
SELECT c.customerID, o.OrderID, CASE When o.OrderID is NULL Then 0 Else 1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
ON c.customerID = o.customerID
'o.OrderId'がnullの場合はありますか?あるいは、それは 'c.OrderId'であるはずですか? – DigiFriend
@DigiFriendはい。そのため、私は 'o.OrderID'を' SELECT'に含めて検証することができます。 – nam
あなたはnorthwindデータベースの下でそれを実行していますか?あなたの質問は正しいです。 'yes'なら0を正しく表示します – Fahmina