PDA

Visualizza la versione completa : [SQL] non accetta attributo distinct, perché?


diddl
25-11-2008, 18:53
Ciao a tutti!!!

Scrivo perché ho un problema con questa query:

SELECT Year(data) AS anno, DISTINCT COUNT(pazienteID) AS nr_pz, COUNT(visitaID) AS nr_visite, SUM(kilometri) AS nr_km FROM visite GROUP BY Year(data) ORDER BY Year(data)

Fa riferimento a una tabella molto semplice composta da un campo primario visitaID, un campo data, un campo kilometri e un campo pazienteID.

Cercando di processarla così com'è, mi genera errore.

Se elimino "DISTINCT" mi dà in output i valori giusti per nr_visite e nr_km ma nr_pz è del tutto identico a nr_visite!

Non riesco a venirne a capo.

Qualcuno sa aiutarmi?

Grazie!

Stoicenko
26-11-2008, 09:34
la porola chiave distinct va solo dopo il select e prima dei campi del select..

diddl
26-11-2008, 10:54
ho provato! Ho messo DISTINCT subito dopo SELECT ma non cambia assolutamente niente...!

Non riesco a venirne a capo. E' illogico :dhò:

Stoicenko
26-11-2008, 12:30
la parola chiave distinct elimina i doppioni nei record restituiti dalla select.. domandati.. è quello che voglio fare io?

diddl
26-11-2008, 13:46
Il mio obiettivo è banale. Si tratta di ottenere una tabella con i dati relativi ad ogni anno (numero tot di pazienti, numero tot di visite e numero tot di km).

Ho impostato la query nel modo che a me sembra corretto:

SELECT Year(data), COUNT(pazienteID), COUNT(visitaID), SUM(kilometri)
FROM visite
GROUP BY Year(data)

la tabella che mi restituisce è in parte corretta: ci sono gli anni, il numero di viste per anno e la somma dei kilometri. Tutto corretto.

Il problema è il numero dei pazienti. Anziché contarmi i singoli pazienti, conta il numero totale di campi pazienteID (che ovviamente corrisponde al numero delle visite).

Inserendo DISTINCT pensavo che mi avrebbe contato il campo pazienteID una sola volta... invece genera errore.

Come posso fare?

Grazie!!

Lucio84
26-11-2008, 14:06
Ciao
fai così

COUNT(distinct pazienteID) AS nr_pz

Ciao

diddl
26-11-2008, 14:58
Originariamente inviato da Lucio84
Ciao
fai così

COUNT(distinct pazienteID) AS nr_pz

Ciao

Grazie!!!!! Adesso tutti i conti tornano!!!

Perfetto!

Ciao! :ciauz:

Loading