Freeskis
01-06-2011, 22:32
Ciao a tutti,
Ho da sottoporvi un giocone/sfida per il 2 Giugno, ( o come si dice a lavoro serve per ieri :) )
io e i ragazzi del team con cui lavoro dobbiamo scrivere un report che prenda i dati da una tabella FACT caricata mensilmente.
il problema sorge qui, i dati vanno caricati dentro un db Oracle da un db DB2 iSeries, ( i due db sono connessi da un DBLink impostato su Oracle ),
il problemaè che i dati all'interno del db DB2 sono caricati senza la minima logica apparente ( roba che manco una scimmia idiota decerebrata riuscirebbe a pensare ad un modo così idiota per piazzare sti dati ).
adesso cerco di spiegare la struttura della tabella il meglio che posso:
la tabella contiene degli importi che si riferiscono a determinati periodi,
la struttura è più o meno questa:
identificativo, anno inizio periodo di riferimento, mese inizio periodo di riferimento, numero di periodi, tipologia di importo, numero righe, importo 1, importo 2, importo 3 ... importo 50.
gli importi sono da 01 a 50 e sono riferiti uno ad ogni mese,
quindi se l'anno di inizio è il 2010 il mese di inizio è l'4 e il numero di periodi è 4, la tabella sarà valorizzata secondo quanto segue:
identificativo, anno inizio periodo di riferimento, mese inizio periodo di riferimento, numero di periodi, tipologia di importo, importo 1, importo 2, importo 3 ... importo 50
340590, 2010, 04, 4, XX, 1, 100, 200, 100, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... fino a 50...
340590, 2010, 04, 4, XC, 1, 100, 200, 100, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... fino a 50...
in questo l'importo uno si riferisce a aprile 2010, il due a maggio 2010 e così via,
quindi il campo 01 sta sempre per il primo mese di competenza indipendentemente quale esso sia
nel caso in cui i periodi di competenza superino i 50 campi la riga scavalla e viene valorizzata la seconda riga, con più o meno questa struttura:
340590, 2010, 04, 4, XD, 1, 100, 200, 100, 200, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, ... fino a 50...
340590, 2010, 04, 4, XD, 2, 100, 200, 100, 200, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, ... fino a 50...
ora questa è la premessa, ecco cosa di cui si ha bisogno per caricare la tabella,
numero identificativo, tipologia di importo, importo del mese di competenza, somma dei valori "residui".
spiego brevemente a cosa si riferiscono i due importi, allora se il caricamento viene effettuato il 1 Giugno per l'esempio di cui sopra,
il valore di competenza sarà quello di maggio e quindi è il valore del secondo importo, mentre
il valore residuo comprende la somma di tutti gli importi da quello di maggio ( escluso ) in poi, comprendendo anche quelli di eventuali seconde righe,
potenzialmente nella tabella ci sono più tipologie di importo per ogni identificativo, e per ogni tipologia di importo ci possono essere più righe.
La soluzione io non ce l'ho, o comunque sono a casa quindi non ce l'ho sottomano,
non può essere scritta con SQL standard quindi serve necessariamente il plSQL ...
Spero di essere stato chiaro e che la sfida vi alletti :O
Ah un ultima cosa,
per lo stesso numero identificativo una tipologia di importo potrebbe iniziare da un mese diverso rispetto al mese di inizio di altre tipologie ma sempre nello stesso anno :)
Ho da sottoporvi un giocone/sfida per il 2 Giugno, ( o come si dice a lavoro serve per ieri :) )
io e i ragazzi del team con cui lavoro dobbiamo scrivere un report che prenda i dati da una tabella FACT caricata mensilmente.
il problema sorge qui, i dati vanno caricati dentro un db Oracle da un db DB2 iSeries, ( i due db sono connessi da un DBLink impostato su Oracle ),
il problemaè che i dati all'interno del db DB2 sono caricati senza la minima logica apparente ( roba che manco una scimmia idiota decerebrata riuscirebbe a pensare ad un modo così idiota per piazzare sti dati ).
adesso cerco di spiegare la struttura della tabella il meglio che posso:
la tabella contiene degli importi che si riferiscono a determinati periodi,
la struttura è più o meno questa:
identificativo, anno inizio periodo di riferimento, mese inizio periodo di riferimento, numero di periodi, tipologia di importo, numero righe, importo 1, importo 2, importo 3 ... importo 50.
gli importi sono da 01 a 50 e sono riferiti uno ad ogni mese,
quindi se l'anno di inizio è il 2010 il mese di inizio è l'4 e il numero di periodi è 4, la tabella sarà valorizzata secondo quanto segue:
identificativo, anno inizio periodo di riferimento, mese inizio periodo di riferimento, numero di periodi, tipologia di importo, importo 1, importo 2, importo 3 ... importo 50
340590, 2010, 04, 4, XX, 1, 100, 200, 100, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... fino a 50...
340590, 2010, 04, 4, XC, 1, 100, 200, 100, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... fino a 50...
in questo l'importo uno si riferisce a aprile 2010, il due a maggio 2010 e così via,
quindi il campo 01 sta sempre per il primo mese di competenza indipendentemente quale esso sia
nel caso in cui i periodi di competenza superino i 50 campi la riga scavalla e viene valorizzata la seconda riga, con più o meno questa struttura:
340590, 2010, 04, 4, XD, 1, 100, 200, 100, 200, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, ... fino a 50...
340590, 2010, 04, 4, XD, 2, 100, 200, 100, 200, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, ... fino a 50...
ora questa è la premessa, ecco cosa di cui si ha bisogno per caricare la tabella,
numero identificativo, tipologia di importo, importo del mese di competenza, somma dei valori "residui".
spiego brevemente a cosa si riferiscono i due importi, allora se il caricamento viene effettuato il 1 Giugno per l'esempio di cui sopra,
il valore di competenza sarà quello di maggio e quindi è il valore del secondo importo, mentre
il valore residuo comprende la somma di tutti gli importi da quello di maggio ( escluso ) in poi, comprendendo anche quelli di eventuali seconde righe,
potenzialmente nella tabella ci sono più tipologie di importo per ogni identificativo, e per ogni tipologia di importo ci possono essere più righe.
La soluzione io non ce l'ho, o comunque sono a casa quindi non ce l'ho sottomano,
non può essere scritta con SQL standard quindi serve necessariamente il plSQL ...
Spero di essere stato chiaro e che la sfida vi alletti :O
Ah un ultima cosa,
per lo stesso numero identificativo una tipologia di importo potrebbe iniziare da un mese diverso rispetto al mese di inizio di altre tipologie ma sempre nello stesso anno :)