【发布时间】:2018-08-23 15:33:18
【问题描述】:
我的 SQL 表中有 4 列:
+--------+----------+---------+--------+-----------+
|Column1 |Column2 |Column3 |Column4 |Column5 |
+--------+----------+---------+--------+-----------+
| 1 | abc | def | | 34654 |
| 2 | def | abc | | 798798 |
+--------+----------+---------+--------+-----------+
目标是检查 Column3 是否在 Column2 中,如果匹配,则使用 Column1 的相应值填充 Column4。
例如Column3的“def”匹配Column2的“def”,所以Column4应该是2。
期望的输出:
+--------+----------+---------+--------+-----------+
|Column1 |Column2 |Column3 |Column4 |Column5 |
+--------+----------+---------+--------+-----------+
| 1 | abc | def | 2 | 34654 |
| 2 | def | abc | 1 | 798798 |
+--------+----------+---------+--------+-----------+
我尝试在其中一张表上进行连接,如下所示:
SELECT a.Column1
, a.Column2
, a.Column3
, b.Column1 as Column4 FROM "table" a
LEFT JOIN "table" b on lower(a.Column3) = lower(b.Column2)
当我的表 Column4 已经存在时,这会创建一个新的 Column4。我正在对许多表进行 UNION ALL,我需要所有列(总共 32 个)作为输出。
如何使用 SQL 查询来实现这一点?
【问题讨论】:
-
查看“case when”语句
-
@Raj 。 . .我不明白这个问题。只需列出您想要的所有列。
标签: sql amazon-athena