Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择最大值w/左连接_Sql_Sql Server_Left Join - Fatal编程技术网

SQL选择最大值w/左连接

SQL选择最大值w/左连接,sql,sql-server,left-join,Sql,Sql Server,Left Join,有时,它们是数字的多个条目,我只需要从表b中选择最大数字,但是,当我尝试时 SELECT a.first, a.last, b.number, c.last_login FROM Table1 a LEFT JOIN Table2 b ON a.first = b.first AND a.last = b.last LEFT JOIN Table3 c ON b.number = c.number 我犯了一个错误。如何选择最大b.number?编辑:我已经很多年没有使用SQLServer了,但

有时,它们是数字的多个条目,我只需要从表b中选择最大数字,但是,当我尝试时

SELECT a.first, a.last, b.number, c.last_login
FROM Table1 a
LEFT JOIN Table2 b ON a.first = b.first AND a.last = b.last
LEFT JOIN Table3 c ON b.number = c.number

我犯了一个错误。如何选择最大b.number?

编辑:我已经很多年没有使用SQLServer了,但也许分析功能可以做到这一点

SELECT a.first, a.last, MAX(b.number), c.last_login
你能证实这一点吗?我没有sqlserver,但在oracle上存在(…)上的MAX()。
如果您想要使用的最大值,LAST_值不是应用于OVER analitics的唯一关键字

SELECT v.first, v.last, c.number, c.last_login
FROM (
    SELECT a.first, a.last, LAST_VALUE(b.number) OVER (PARTITION BY a.first, a.last ORDER BY a.first, a.last, b.number) AS yourmax
    FROM Table1 a
    LEFT JOIN Table2 b ON a.first = b.first AND a.last = b.last
    GROUP BY a.first, a.last
) v
INNER JOIN Table3 c ON v.yourmax = c.number

尝试添加分组依据:分组依据a.first、a.last、c.last\u登录
SELECT a.first, a.last, b.MaxNumber, c.last_login
FROM Table1 a
LEFT JOIN (select tmp.first, tmp.last, max(tmp.number) MaxNumber from Table2 tmp
group by tmp.first, tmp.last
) b
ON a.first = b.first AND a.last = b.last
LEFT JOIN Table3 c ON b.MaxNumber = c.number