【发布时间】:2015-12-09 13:34:30
【问题描述】:
我对 SQL 很陌生,我无法让它工作我在下面有这两个表
Table A Table B
_________________ _________________
| A | 2015-10-4 | B | 2015-11-6
| B | 2015-11-4 | C | 2015-05-4
| C | 2015-05-6 | D | 2015-05-8
| D | 2015-05-7 | C | 2015-05-5
我正在尝试编写一个存储过程,该过程将从表 B 中获取日期小于表 A 的所有字母以及表 B 中不存在的任何字母。
这是我目前所拥有的
SELECT *
FROM A q JOIN
B c ON q.Letter = c.Letter AND q.Date > c.Date OR c.Letter IS NULL
这会返回 C,但我不能让它也返回 A。尝试加入和比较表格仍然让我感到困惑。
我不想要重复的行,我期望的结果会返回
| A | 2015-10-4
| C | 2015-05-6
编辑
我现在遇到了一个问题,如果我有这样的情况
Table A Table B
_________________ _________________
| A | 2015-10-4 | B | 2015-11-6
| B | 2015-11-4 | C | 2015-05-4
| C | 2015-05-6 | D | 2015-05-8
| D | 2015-05-7 | C | 2015-05-5
| C | 2015-05-7
由于某种原因,它仍然会返回 C。使用 a.date > max(b.date) 不起作用,因为 max 不能那样使用。我想假设最大日期可以在表 B 中的任何地方。
所以现在我的新结果是
| A | 2015-10-4
但我仍然得到 A 和 C。
【问题讨论】:
-
您应该发布您想要的结果,以便我们了解您是否想要重复的行、哪些日期等
-
@Lamak 已编辑并获得预期结果!谢谢!
标签: tsql sql-server-2012