【发布时间】:2018-02-12 07:25:20
【问题描述】:
我正在尝试加入 2 个表,但仅从表 B 中选择 id 最大且表 A 和 B 之间有 2 列匹配的值。
我已经尝试过了,但由于表 2 的值最高,它只选择了 1 行,但我需要显示整个表 A。
WITH CTE AS
(
SELECT DocNum, Status
FROM TableB
WHERE Id = (SELECT MAX(Id) FROM TableB)
)
SELECT TableA.DocNum, DocTitle, cte.Status
FROM TableA
INNER JOIN cte
ON TableA.DocNum = cte.DocNum
下面的例子:
Table A
Id DocNum DocTitle
1 ST-0001 SomeTitle
2 ST-0002 SomeTitle
3 ST-0003 SomeTitle
4 ST-0004 SomeTitle
5 ST-0005 SomeTitle
Table B
Id DocNum Status
1 ST-0001 Incomplete
2 ST-0001 Complete
3 ST-0002 Complete
4 ST-0003 Incomplete
5 ST-0004 Incomplete
6 ST-0004 Complete
7 ST-0005 Incomplete
Result
DocNum DocTitle Status
ST-0001 SomeTitle Complete
ST-0002 SomeTitle Complete
ST-0003 SomeTitle Incomplete
ST-0004 SomeTitle Complete
ST-0005 SomeTitle Incomplete
【问题讨论】:
-
到目前为止,您是否尝试过任何方法来解决问题?
-
您使用的是哪个版本的 SQL(例如 MySQL、SQL Server 等)?你有没有尝试过?
-
Join,Group by是解决方案 -
您是否尝试过在
TableB中使用Order By fieldname Desc而不是where条件max id
标签: sql sql-server-2008 greatest-n-per-group