sql - 通过 sql-server 中的公共列将 select 语句组合在一起
问题描述
我需要根据一个公共列将两个表组合在一起。通常我只会在特定列上使用内部连接(我们称之为 parentID),但我需要将结果放在单独的行中。
表 A:
ID, ...
表 B:
ID, ParentID, SomeColB, ...
表 C:
ID, ParentID, SomeColC, ...
ParentID 指向表 A 的 ID。结果应如下所示:
ParentID ID_A ID_B SomeColB SomeColC
1 10 20 'VAL_B1' NULL
1 10 20 NULL 'VAL_C1'
2 11 21 'VAL_B2' NULL
2 11 21 NULL 'VAL_C2'
...
所以我想在从表 B 和 C 中选择值之间交替,并将剩余的列保留为空。我该怎么做?
我尝试将它们连接在一起,但这导致结果被放入一行。
编辑:表 B 和 C 都与表 A 具有 1-n 关系(表 a 中的一个条目可以从表 B 和 C 中的多个条目中引用)。表 B 和 C 不相互引用,完全相互独立。
解决方案
像这样的东西对你有用吗?我使用 UNION 来获取每个 ParentID 的两组数据:
SELECT
*
FROM (
SELECT
ParentID,
ID_A,
ID_B,
SomeCol B,
NULL AS SomeColC
FROM
TableA
UNION
SELECT
ParentID,
ID_A,
ID_B,
NULL AS SomeColB,
SomeColC
FROM
TableB
)
ORDER BY
ParentID,
SomeColB,
SomeColC
推荐阅读
- python - 特定整数的while循环(Python)
- tableau-api - 仅按年显示选定的月份(YTD)
- machine-learning - 有意义地解释 BaseN 编码的特征重要性
- validation - 在重复的工作表中复制受 Google 表格保护的范围 [解决方法]
- algorithm - 在两个排序序列之间找到共同元素的时间复杂度
- javascript - 设置 http 代理 google chrome 扩展
- xpath - 带有scrapy shell的Xpath
- python - 将第二个和第三个通道添加到张量 - Pytorch
- python - 在python中导入随机模块不输出数字
- angular - 通过角度8调用注销方法asp.net webapi 2