sql - 流分析 - 如何使用参考数据进行 FULL OUTER JOIN?
问题描述
我正在使用流分析的 T-SQL 对流输入和参考数据输入进行完全外部联接。
我已经尝试了以下查询,但我不断收到错误消息“当加入流和参考数据时,参考数据必须在右侧”。
我想做两者的完全外连接 - 如果参考数据永远不会在左侧,我该怎么做?
With leftJoin AS (
SELECT SA.[InputID], RD.[InputID]
FROM StreamData AS SA
LEFT JOIN ReferenceData AS RD
ON SA.[InputID] = RD.[InputID]
),
rightJoin AS (
SELECT SA.[InputID], RD.[InputID]
FROM ReferenceData AS RD -- Causes the error 'cause it should be on the right
LEFT JOIN StreamData AS SA
ON SA.[InputID] = RD.[InputID]
)
SELECT *
INTO [StorageTable]
FROM leftJoin
UNION
SELECT *
FROM rightJoin
我的预期输出是这样的:
SA.[InputID] | RD.[InputID]
------------------------------
1 | 1
2 | null
null | 3
4 | 4
解决方案
这是不适合评论部分的评论。
关键是任何表上的所有列名都必须始终具有唯一的名称。一个表上不能有两个同名的列。
当您运行 a 时,SELECT INTO
您实际上是在创建一个新表。正在创建的表的每一列都应该有不同的名称。否则数据库引擎将拒绝创建此表。
我在想你应该试着给第二列起一个不同的名字。例如:
With leftJoin AS (
SELECT
SA.[InputID],
RD.[InputID] as rd_inputid -- added an alias to the column
FROM StreamData AS SA
LEFT JOIN ReferenceData AS RD
ON SA.[InputID] = RD.[InputID]
),
rightJoin AS (
SELECT
SA.[InputID],
RD.[InputID] as rd_inputid -- added an alias to the column
FROM ReferenceData AS RD
LEFT JOIN StreamData AS SA
ON SA.[InputID] = RD.[InputID]
)
SELECT *
INTO [StorageTable]
FROM leftJoin
UNION
SELECT *
FROM rightJoin
我希望它有所帮助。
推荐阅读
- angular11 - 实现搜索去抖动时间时出现异常 - this' 隐含类型为 'any',因为它没有类型注释
- arrays - MongoDB | 列出纽约每个城市的邮政编码/邮政编码
- python - 在 2 个 csv 文件上使用 pandas 进行左合并
- python-3.x - Django,链接三个模型
- c# - Kendo UI webmethod 为复选框返回不同的@checked 值,并且相应的 JS 方法获取正确的值
- bootstrap-5 - 如何使用引导程序 5 将我的下拉选择与我的文本放在同一行?
- javascript - VueJS - 仅适用于角色 X 显示页面 Y
- shell - 使用 fzf 函数搜索,列出我要搜索的目录集合
- pine-script - 我可以在屏幕上创建一个按钮来启动/停止/修改 TradigView with pine 的策略吗?
- sql - 遇到了我的程序无法运行的符号“DECLARE”和“文件结尾”问题?