免责声明:我不确定如何正确命名这个问题,所以如果有人问过这个问题,我深表歉意。我发现的标题和内容相似的问题并没有解决我的问题。
我有两个表,问题和文本。 Issues 和 Text 都共享一个 ID 列,作为 Issues 的主键。 Text 使用 ID 和 Field 作为键列。
最终我想要一个sql查询来选择我想要的问题中的内容,然后根据ID从文本中选择正确的值。我一直在使用联接,但我不知道在需要多行时如何让它工作。我想在输出中包含匹配 ID 的 A 列和 A 的 Text.Field 值,以及匹配 ID 的 B 列和 B 的 Text.Field 值。
我将如何实现这一点?
我正在从 Netezza 环境中提取数据,因此 Pivot 不可用
谢谢
示例结构:
Issues Table:
|ID|Column1|Column2|
--------------------
|0 | 17| 18|
|1 | 19| 20|
Text Table:
|ID| Field| Value |
--------------------
|0 | A| 30|
|0 | B| 31|
|1 | A| 40|
|2 | B| 41|
Output:
|ID|Column1|Column2|Column3 (Field = 'A') | Column4 (Field = 'B')|
------------------------------------------------------------------
| 0| 17| 18| 30 | 31 |
| 1| 19| 20| 40 | 41 |
最佳答案
SELECT
Issues.ID,
Issues.Column1,
Issues.Column2,
Text.Value Column3,
Text2.Value Column4
FROM
Issues LEFT OUTER JOIN Text ON Text.ID = Issues.ID AND Text.Field = 'A'
LEFT OUTER JOIN Text AS Text2 ON Text2.ID = Issues.ID AND Text2.Field = 'B'
关于SQL 连接单个表的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535242/