Preciso retornar apenas a 1 linha do MAX(ID), mas minha consulta não está retornando isso.
Este é o conjunto de resultados que recebo retornado
id bbid indate st val
200817 16543 01/01/16 1 65.4
2017 16543 01/01/16 1 36.52
1995 16543 01/01/16 1 18.51
20932 1234 03/01/16 1 55.3
22324 1234 03/01/16 1 16.52
55 8232 05/01/16 2 100
Isso é o que EU QUERO devolvido
id bbid indate st val
200817 16543 01/01/16 1 65.4
22324 1234 03/01/16 1 16.52
55 8232 05/01/16 2 100
(Apenas uma linha por bbid e, se bbid tiver várias entradas, extraia os dados de MAX(ID))
Aqui está um exemplo de DDL para ajudar a solucionar problemas
Create Table #One
(
id int
,bbid int
,val varchar(100)
)
Create Table #Two
(
bbid int
,st int
,indate datetime
)
Insert Into #One Values
('200817','16543','65.40')
,('2017','16543','36.52')
,('1995','16543','18.51')
,('20932', '1234', '55.30')
,('22324', '1234', '16.52')
,('55', '8232', '100')
Insert Into #Two Values
('16543', '1', '2016-01-01')
,('1234', '1', '2016-03-01')
,('8232','2', '2016-05-01')
E esta é a consulta que escrevi que produziu os resultados incorretos...
Select
t1.id
,t3.bbid
,t3.indate
,t3.st
,t1.val
FROM #One t1
JOIN
(
Select
id
,MAX(ID) As "Maxid"
FROM #One
GROUP BY ID
) t2
ON t1.id=t2.Maxid
INNER JOIN #Two t3
ON t1.bbid = t3.bbid
Como essa consulta deve ser alterada para retornar meu conjunto de resultados desejado?
Você pode usar uma expressão de tabela comum (cte).
Mantendo as coisas simples
ou apenas coloque isso em sua consulta como t2
Aqui está!
Este usa um CTE, mas não depende de row_number (apenas no caso de você achar a sintaxe muito complicada)