我知道这个问题已经问了很多,但我似乎无法使我的查询正常工作。
我试图在查询中每个ID仅获得一行,如下所示:
SELECT a.id, b.name
FROM table1 a
LEFT JOIN table2 b ON a.key = b.key
WHERE a.Date =
(SELECT MAX(a1.date) from table1 WHERE a1.primarykey = a.primarykey)
GROUP BY a.id, b.name
我不需要按b.name分组,因为我需要按id分组。
现在,我多次出现b.name,它重复了a.id,而我只希望a.id的最后日期对应的b.name。
任何人都可以指出正确的方法吗?
谢谢
如果您要从组语句中删除b.name,似乎每个id将获得1行。
不确定是否要对a.id进行分组为什么要对b.name进行分组?
尝试一下:
SELECT a.id, b.name from (
SELECT a1.id,a1.key,
rank() over(partition by a1.key order by a1.date desc) md FROM table1 a1 )a
LEFT JOIN table2 b ON a.key = b.key and a.md=1;
但是我不明白-您需要按ID或键分组,请仔细检查