(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 排序,因为第二个查询中的列名不是最终结果集中的列名。只有第一个查询中的名称。