SQL 条件 JOIN 列

标签 sql join case conditional-statements coalesce

这个问题在这里已经有了答案:





SQL Conditional AND

(4 个回答)


7年前关闭。




我想根据当前行的值确定 JOIN 列。

例如,我的工作表有 4 个日期列:offer_date、accepted_date、start_date、reported_date。

我想根据日期检查汇率。我知道reported_date 永远不会为空,但这是我最后的手段,所以我有一个优先顺序来加入exchange_rate 表。如果这是正确的方法,我不太确定如何使用 CASE 语句执行此操作。

INNER JOIN exchange_rate c1 ON c1.date = {{conditionally pick a column here}}

  -- use j.offer_date if not null
  -- use j.accepted_date if above is null
  -- use j.start_date if above two are null
  -- use j.reported_date if above three are null

最佳答案

试试这样的逻辑:

INNER JOIN
exchange_rate c1
ON c1.date = coalesce(j.offer_date, j.accepted_date, j.start_date, j.reported_date)
coalesce()函数返回列表中的第一个非 NULL 值。

关于SQL 条件 JOIN 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255240/

相关文章:

sql - 使用 CASE 语句检查表中是否存在列 - SQL Server

sql - SQL中的用例语句

sql - Databricks SQL - 如何在第一次运行中获取所有行(超过 1000)?

sql - 在多对多实体之间查找sql​​连接组件

java - "org.zuinnote.spark.office.excel"包中未写入空值

sql - 在单个sql查询中选择多个表

sql - 如何列出查询中的列名

sql - MySQL/SQL 的简写 "Using"可以不说 "Inner Join"就用吗?

mysql批量插入来自另一个表的引用ID

当连接字段有多个匹配项时,MYSQL 聚合条目