このような顧客とその注文明細を一覧表示するSQLServer2005テーブルがあります...
Cust | Code
Cust1 N001
Cust2 N001
Cust2 N003
Cust2 N004
Cust3 N001
Cust3 N002
Cust3 N003
Cust3 N004
各顧客(1回)と、N002からN004までの商品を注文したかどうかをリストする結果が必要です。したがって、結果は次のようになります...
Cust | Ordered?
Cust1 False
Cust2 True
Cust3 True
All / ANYなどのさまざまな組み合わせを試しました。最も近いのは、2つのクエリを使用することでした。最初に、次のように追加して、各行の最後にtrue/falseステートメントを取得します...
SELECT
Cust, Code,
CASE
WHEN Code BETWEEN 'N002' AND 'N004' THEN 'True'
ELSE 'False'
END AS Expr1
これにより、次のようになります...
Cust | Code | EXPR1
Cust1 N001 FALSE
Cust2 N001 FALSE
Cust2 N003 TRUE
Cust2 N004 TRUE
Cust3 N001 FALSE
Cust3 N002 TRUE
Cust3 N003 TRUE
Cust3 N004 TRUE
次に、2番目のクエリを使用して、取得した結果をグループ化します
Cust | Ordered?
Cust1 False
Cust2 False
Cust2 True
Cust3 False
Cust3 True
だから誰もが簡単に達成するのを助けることができます...
Cust | Ordered?
Cust1 False
Cust2 True
Cust3 True