(SQL) 联合与附加数据的组合
(SQL) Union combination with additional data
我在工作中使用 WiSys 的名为 Agility 的数据库程序。我遇到了一个不寻常的情况,我需要的部分数据在特定 table 的一列中找到,其余数据在另一个 table.
的另一列中
我使用 UNION 组合这些 table,但我发现我无法添加报告其余部分所需的更多数据。当我这样做时,我收到一条错误消息,指出:所有使用 UNION、INTERSECT 或 EXCEPT 运算符组合的查询在其目标列表中必须具有相同数量的表达式。
基本上,UNION 会根据需要工作,我已将我的数据合并到一列中,但是,我无法调用查询中所需的任何其他数据,因为 UNION 会阻止调用该数据。
这是我的查询,没有我需要的额外数据:
SELECT table1_sql.UnionColumn1,
FROM table1_sql
UNION
SELECT table2_sql.UnionColumn2 AS CombinedColumn
FROM table2_sql
ORDER BY CombinedColumn
我的报告中还需要有包含这些额外列的 UNION:
SELECT table1_sql.UnionColumn1,
table1_sql.ExtraColumn1,
table1_sql.ExtraColumn2,
table1_sql.ExtraColumn3,
table1_sql.ExtraColumn4
FROM table1_sql
UNION
SELECT table2_sql.UnionColumn2 AS CombinedColumn
FROM table2_sql
ORDER BY CombinedColumn
我尝试检索的数据示例如下:
Example Data 其中 Order_No 是我想通过 UNION 加入的数据,其他所有数据也是需要但不允许使用 UNION 的数据。
Agility 程序不像其他程序那样健壮,因此我使用 UNION 的替代方案来完成此报告的能力有些受限。请指教
错误消息告诉您完整的故事。使用联合时,两个查询必须具有相同的列数。您可以通过简单地添加一些硬编码 NULLS 来使用它。
SELECT table1_sql.UnionColumn1,
table1_sql.ExtraColumn1,
table1_sql.ExtraColumn2,
table1_sql.ExtraColumn3,
table1_sql.ExtraColumn4
FROM table1_sql
UNION
SELECT table2_sql.UnionColumn2 AS CombinedColumn
, NULL
, NULL
, NULL
, NULL
FROM table2_sql
ORDER BY CombinedColumn
请注意,您必须按 UnionColumn1 排序,因为第二个查询中的列名不是最终结果集中的列名。只有第一个查询中的名称。
我在工作中使用 WiSys 的名为 Agility 的数据库程序。我遇到了一个不寻常的情况,我需要的部分数据在特定 table 的一列中找到,其余数据在另一个 table.
的另一列中我使用 UNION 组合这些 table,但我发现我无法添加报告其余部分所需的更多数据。当我这样做时,我收到一条错误消息,指出:所有使用 UNION、INTERSECT 或 EXCEPT 运算符组合的查询在其目标列表中必须具有相同数量的表达式。
基本上,UNION 会根据需要工作,我已将我的数据合并到一列中,但是,我无法调用查询中所需的任何其他数据,因为 UNION 会阻止调用该数据。
这是我的查询,没有我需要的额外数据:
SELECT table1_sql.UnionColumn1,
FROM table1_sql
UNION
SELECT table2_sql.UnionColumn2 AS CombinedColumn
FROM table2_sql
ORDER BY CombinedColumn
我的报告中还需要有包含这些额外列的 UNION:
SELECT table1_sql.UnionColumn1,
table1_sql.ExtraColumn1,
table1_sql.ExtraColumn2,
table1_sql.ExtraColumn3,
table1_sql.ExtraColumn4
FROM table1_sql
UNION
SELECT table2_sql.UnionColumn2 AS CombinedColumn
FROM table2_sql
ORDER BY CombinedColumn
我尝试检索的数据示例如下: Example Data 其中 Order_No 是我想通过 UNION 加入的数据,其他所有数据也是需要但不允许使用 UNION 的数据。
Agility 程序不像其他程序那样健壮,因此我使用 UNION 的替代方案来完成此报告的能力有些受限。请指教
错误消息告诉您完整的故事。使用联合时,两个查询必须具有相同的列数。您可以通过简单地添加一些硬编码 NULLS 来使用它。
SELECT table1_sql.UnionColumn1,
table1_sql.ExtraColumn1,
table1_sql.ExtraColumn2,
table1_sql.ExtraColumn3,
table1_sql.ExtraColumn4
FROM table1_sql
UNION
SELECT table2_sql.UnionColumn2 AS CombinedColumn
, NULL
, NULL
, NULL
, NULL
FROM table2_sql
ORDER BY CombinedColumn
请注意,您必须按 UnionColumn1 排序,因为第二个查询中的列名不是最终结果集中的列名。只有第一个查询中的名称。