SQL 连接单个表的多行

标签 sql join netezza

免责声明:我不确定如何正确命名这个问题,所以如果有人问过这个问题,我深表歉意。我发现的标题和内容相似的问题并没有解决我的问题。

我有两个表,问题和文本。 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/

相关文章:

来自两个连接表和多行的MySQL总和

php - 使用多个内连接

mysql - Hive表和Netezza表之间的匹配记录

sql - 从一个表到另一个表的Netezza UPDATE

sql - 如何从员工表中找到第二大的薪水?

sql - 如何将空字符串设为空值以允许在可选字段中重复空字符串?

mysql连接1 :2 relation

mysql - 在 SQL 数据库中创建一个名为 "select"的表

sql - 优化使用日期进行过滤和连接的 SQL 查询

sql - 如何获取同一张表中存在不同和几乎不同记录的记录差异计数