我有 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 中的任何客户。如果视图 3 已经在视图 1 和 2 中,则视图 3 将没有任何客户。如果视图 4 已经在视图 4 中,则不会有任何客户视图 1、2 和 3 等:这将持续到第 7 个视图(视图 7 不会在视图 1、2、3、4、5 和 6 中报告任何客户)
2.此当前查询在末尾生成一列,标题为“查看 1 列表”,然后标识客户所在的列表。
我正在寻找的是一种为每个视图创建一个列的方法,该列将识别它们与哪个视图相关。该值可以只是一个 X 或其他东西。
不确定这是否可行,但是我知道我不能使用 UNION 语句来做到这一点。