【问题标题】:join tables on 2 cols - can't figure it out在 2 个列上加入表格 - 无法弄清楚
【发布时间】:2019-07-01 21:06:26
【问题描述】:

我不是 SQL 专家,虽然这似乎是一个足够简单的查询,但我不知道该怎么做...我已经尝试了我所知道的所有内容,搜索并尝试了我没有尝试过的东西知道,但我就是无法获得干净的输出。我敢肯定这之前一定有人问过,但我没有找到答案。希望有人可以让我摆脱我的精神痛苦......

表 1

表 2

我需要的是:

对于表 1 中的每个 acc_nbr/sip_nbr 对, 获取最新的 sell_dt 并使用 sell_dt,从表 2 中获取该日期 sip_nbr 的价格

例如,对于 yyGG10234/xxFF10234,输出应该是

【问题讨论】:

  • 我删除了不兼容的数据库标签。请仅使用您真正使用的数据库进行标记。
  • 另外,请将任何所需的数据/文本/代码等直接添加到问题中。请edit您的问题。谢谢。
  • stackoverflow.com/questions/16597660/… 之前问过...连同这个...w3schools.com/sql/sql_join.asp 应该会让您的任务变得轻松
  • @Gordon 谢谢。我认为我没有标记任何数据库,但会更加小心
  • 谢谢。我没有输入代码,因为我尝试了很多东西但理解了。我在下面标记了答案

标签: sql


【解决方案1】:

使用子查询获取 acc_nbr 和 sip_nbr 的每个组合的最大日期,然后针对该子查询加入另一个表

SELECT acc_nbr, t1.sip_nbr, max_sell, price
FROM (SELECT sip_nbr, acc_nbr, MAX(sell_dt) as max_sell
      FROM table1 
      GROUP BY sip_nbr, acc_nbr) t1 
LEFT JOIN table2 t2 ON t1.sip_nbr = t2.sip_nbr AND max_sell = t2.pricedate

我使用左连接来包含表 1(子查询)中的所有行,但如果您只想要那些具有日期价格日期的行,则删除 LEFT。

【讨论】:

  • 非常感谢!我不明白为什么我不能这样做....标记为答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多