AdventureWorksという名前のデータベースには、Production.ProductとSales.SalesOrderDetailの2つのテーブルがあります。この表には、利用可能な製品に関するデータと詳細な注文履歴が含まれています。
Production.Productテーブルには、次の2つの列が含まれます。
製品番号

名

Sales.SalesOrderDetailテーブルには、次の3つの列があります。
SalesOrderID

製品番号

OrderQty

注文していないすべての製品をリストしたクエリを作成する必要があります。
どのステートメントを実行する必要がありますか?
A:

B:

C:

D:

正解:A
説明/参照:
Explanation:
EXCEPTおよびINTERSECTは、2つの照会の結果を比較することによって異なる行を戻します。
EXCEPTは、左の入力クエリから、正しい入力クエリによって出力されない別個の行を返します。
ORDER BY句の列名またはエイリアスは、左側のクエリによって返された列名を参照する必要があります。
例:次の照会は、EXCEPT演算子の左にある照会の固有値を、正しい照会では見つからないものとして戻します。
- AdventureWorksを使用する
SELECT CustomerKey
FactInternetSalesから
例外
SELECT CustomerKey
FROM DimCustomer
WHERE DimCustomer.Gender = 'F'
ORDER BY CustomerKey;
- 結果:9351行(女性ではない顧客への販売)
間違った回答:
B:ORDER BY句の列名またはエイリアスは、左側のクエリによって返される列名を参照する必要があります。
C、D:INTERSECTは、左と右の入力クエリ演算子の両方によって出力される個別の行を返します。
参考資料:https://msdn.microsoft.com/en-us/library/ms188055.aspx