PDA

View Full Version : [QUERY SQL] inserimento date


andilbingo
23-05-2013, 01:06
Colgo l'occasione per salutare tutti essendomi appena inscritto!
arrivo subito al sodo:
Ho una serie di date d/m/y importate in una colonna su postgresql, ogni data puo ripetersi piu di una volta, riga per riga e sono raggruppate e in ordine.

01/01/2011
01/01/2011
02/01/2011
03/01/2011
03/01/2011
04/01/2011

facendo una query:

select count (*) as nuova_colonna, data
from nome_tabella
group by data order by data

ho aggiunto un contatore delle date doppie (nella nuova colonna) e le ho rese quindi ripetibili una sola volta, avendo:

01/01/2011 --> 2
02/01/2011 --> 1
03/01/2011 --> 2
04/01/2011 --> 1

Fino qui nessun problema! ma il punto critico che mi sta mandando al manicomio è il seguente:
Filtrando le date e associandole ad un codice (presente in un'altra colonna)
(where codice = 4) esse non risulteranno più progressive, ma naturalmente saranno visualizzate solo le date associate al codice di appartenenza!
quindi:

01/01/2011 -->2
04/01/2011 -->1
06/01/2011 -->1
ecco vorrei quindi inserire tra le date quelle mancanti e naturalmente con il valore nella nuova_colonna uguale a 0!

01/01/2011 --> 2
02/01/2011 --> 0
03/01/2011 --> 0
04/01/2011 --> 1
05/01/2011 --> 0
06/01/2011 --> 1


Spero di essermi spiegato bene!
Ringrazio anticipatamente tutti aspettando una vostra risposta!

The_ouroboros
23-05-2013, 16:37
Risolvere usando un coalesce o un case?
Nel senso se sono del codice interessato sommo 1 altrimenti metto a 0.
Usi un *as* sulla query e poi fai un order by su quella.. Non so se mi spiego bene..

Inviato con il mio Xperia P

rizamp
28-05-2013, 10:45
ma non basta fare una outer join? Il risultato di una query left outer join (o semplicemente left join) per le tabelle A e B contiene sempre tutti i record della tabella di sinistra ("left") A, mentre vengono estratti dalla tabella di destra ("right") B solamente le righe che trovano corrispondenza nella regola di confronto della join. Questo significa che se la clausola ON trova 0 (zero) righe in B, la join mostrerà una riga risultante con valore NULL in tutte le colonne corrispondenti al risultato per le colonne di B.

claro no?