我有我想象的是一个有点基本的SQL问题,并希望得到一些帮助。我正在使用MSSQL。有条件的SQL加入
我有两个表:
Table A Table B ---------------------------------------------- A.ID |A.Date| B.ID|B.Date|B.Number
A.ID是独一无二的;没有重复的行。 B.ID不唯一,因此连接该列上的表可能导致返回多行。为了获得正确的记录,必须加入两栏,但这也有不良结果的问题。例如:
Table A | Table B ---------------------------------------------- 1 |01-01-2014 | 1 |01-01-2014|25 2 |01-30-2014 | 1 |04-30-2013|40 3 |03-24-2014 | 1 |10-12-2018|12 4 |05-28-2014 | 2 |11-17-2013|55
期望的结果是加入两列并返回一行。我遇到的问题是,如果我使用示例数据加入两个列是相等的,那么只有第一行会返回。如果我将ID列设置为相等并使用< =,则多行将返回ID 1,这是不希望的。我无法使用最大日期,因为某些字段包含将来的日期,在两个日期字段相等之前不应返回记录。在示例数据中,所需的结果将返回数字25和55.所以基本上我需要加入ID列相同和日期字段相等,但如果表B中没有相同的日期,则返回最新日期的编号,假设它不是未来的日期。
希望这是有道理的。提前致谢。
那么,结果如何?你有没有得到一个适合你的答案? – ngreen 2014-10-31 16:40:43
我对这个大规模的延迟表示歉意......它在一段时间里倒下了。我最终使用ROW OVER的相关子查询来分割结果,只抓取所需结果。 – user2820853 2015-07-16 19:17:47