データベース内のすべての顧客のリストを表示する 7 つのビューがあります。
例えば。
- ビュー1
- ビュー2
- ビュー3
- ビュー4
- ビュー5
- ビュー6
- ビュー7
現在、各ビューには、これらのどのビューでも同じ顧客が含まれる可能性があります。
これは、現在 UNION を使用してすべてを 1 つの結果セットにまとめる例です:-
SELECT
CustomerId,
Account,
Name,
Balance,
'View1' AS [View 1 List]
FROM View1
UNION
SELECT
CustomerId,
Account,
Name,
Balance,
'View2' AS [View 2 List]
FROM View2
UNION
SELECT
CustomerId,
Account,
Name,
Balance,
'View3' AS [View 3 List]
FROM View3
UNION
SELECT
CustomerId,
Account,
Name,
Balance,
'View4' AS [View 4 List]
FROM View4
UNION
SELECT
CustomerId,
Account,
Name,
Balance,
'View5' AS [View 5 List]
FROM View5
UNION
SELECT
CustomerId,
Account,
Name,
Balance,
'View6' AS [View 6 List]
FROM View6
UNION
SELECT
CustomerId,
Account,
Name,
Balance,
'View7' AS [View 7 List]
FROM View7
このクエリには 2 つの問題があります。
1.最初のビューにある顧客を残りのビューに表示されないように除外し、そこから先に進みたい。したがって、ビュー 2 の顧客には、ビュー 1 の顧客は含まれません。ビュー 1 と 2 に顧客が既に存在する場合、ビュー 3 には顧客が含まれません。ビュー 4 には、顧客が既に存在する場合、顧客は含まれません。ビュー 1、2、3 など: これは 7 番目のビューまで続きます (ビュー 7 では、ビュー 1、2、3、4、5、および 6 で既に報告されている顧客はありません)。
2.この現在のクエリは、最後に「View 1 List」というタイトルの列を生成し、顧客がどのリストにいるかを識別します。
私が探しているのは、関連するビューを識別する各ビューの列を持つ方法です。値は X か何かにすることができます。
これが可能かどうかはわかりませんが、UNION ステートメントを使用して実行できないことはわかっています。