prawidłowe sposobem użycia max w mającej klauzuli jest przeprowadzając siebie przyłączyć pierwszy:
select t1.a, t1.b, t1.c
from table1 t1
join table1 t1_max
on t1.id = t1_max.id
group by t1.a, t1.b, t1.c
having t1.date = max(t1_max.date)
Poniższy sposób można przyłączę się z podstępem y:
select t1.a, t1.b, t1.c
from table1 t1
where t1.date = (select max(t1_max.date)
from table1 t1_max
where t1.id = t1_max.id)
Pamiętaj, aby utworzyć jeden zestaw danych przed użyciem kruszywa w kontaktach z wielu stołach dołączyć:
select t1.id, t1.date, t1.a, t1.b, t1.c
into #dataset
from table1 t1
join table2 t2
on t1.id = t2.id
join table2 t3
on t1.id = t3.id
select a, b, c
from #dataset d
join #dataset d_max
on d.id = d_max.id
having d.date = max(d_max.date)
group by a, b, c
Sub wersja zapytania:
select t1.id, t1.date, t1.a, t1.b, t1.c
into #dataset
from table1 t1
join table2 t2
on t1.id = t2.id
join table2 t3
on t1.id = t3.id
select a, b, c
from #dataset d
where d.date = (select max(d_max.date)
from #dataset d_max
where d.id = d_max.id)
Nie jestem guru SQL, ale działa to czy nie? Nie określasz nawet, z czym masz problemy i czy Twoje rozwiązanie działa, czy nie. –
Będziesz musiał wyjaśnić, co chcesz lepiej dla mnie, aby zrozumieć to pytanie. – tster
jest jakieś rozwiązanie, aby uzyskać prawidłowy wynik? –