Domanda

Devo ottenere un set di record distinti per una tabella insieme alla data massima per tutti i duplciate.

ex:

Select distinct a,b,c, Max(OrderDate) as maxDate
From ABC
Group By a,b,c

Il problema è che ricevo un record per ogni data diversa.

Es .:

aaa, bbb, ccc, Jan 1 2009
aaa, bbb, ccc, Jan 28 2009

Come posso limitarlo, così finisco con solo:

aaa, bbb, ccc Jan 28 2009

Suppongo che il problema sia il gorup di e distinto non andare d'accordo.

EDIT: trovato il problema che stava causando il problema, i risultati della query erano come previsto, non come sopra.

È stato utile?

Soluzione

Qualcosa non va nella tua query o nei risultati del tuo esempio, poiché ciò che descrivi non dovrebbe essere possibile. Che ne dici di alcuni SQL effettivi e dei risultati effettivi?

In ogni caso, non ti serve distinto poiché tutto ciò che stai selezionando sono le tue tre colonne raggruppate un aggregato, quindi per definizione finirai con tutte le righe distinte. Non l'ho mai provato, quindi forse c'è qualche comportamento scorretto quando si usano entrambi. Hai provato a rimuovere il distinto ? Cosa ti ha spinto a metterlo lì?

Altri suggerimenti

WITH q AS (
        SELECT  abc.*, ROW_NUMBER() OVER (PARTITION BY a, b, c ORDER BY orderDate DESC) AS rn
        FROM    abc
        )
SELECT  *
FROM    q
WHERE   rn = 1

Avere un indice su (a, b, c, orderDate) (in questo ordine) migliorerà notevolmente questa query.

Se si esegue questa query:

select 'ab' as Col1, 'bc' as col2, 'cd' as col3, getdate() as Date
into #temp
insert into #temp
values ('ab','bc','cd','1/15/09')
insert into #temp
values ('aa','bb','cc','1/1/09')
insert into #temp
values ('aa','bb','cc','1/22/09')

select col1,col2,col3,max(date)
from #temp
group by col1,col2,col3

Dovresti tornare indietro:

  

aa, bb, cc, 22-01-2009 00: 00: 00.000
  ab, bc, cd, 2009-04-30 09: 23: 07.090

Anche la tua query funzionerà, quindi qualcosa non va o non hai comunicato correttamente la natura esatta del tuo codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top