|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2008
Messaggi: 199
|
[PL-SQL] Sfidone del 2 Giugno
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 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
__________________
...πάντα ῥεῖ...
|
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: Nov 2010
Città: Torino
Messaggi: 53
|
Quote:
__________________
*/ --------------------------------------------- \* Trattative concluse positivamente con: startpoint |
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Aug 2008
Messaggi: 199
|
Quote:
purtroppo è il mondo reale, dove i progetti da 3 mesi di sviluppo devono essere consegnati per ieri, e dove non frega un cazzo a nessuno di chi era Codd e chi Boyce basta che le cose funzionino, non importa come.
__________________
...πάντα ῥεῖ...
|
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
P.s: comunque scriverlo in PL/SQL imho dovrebbe esser un vantaggio, ti voglio veder a fare gli update in sql oracle senza l'aiuto del PL/SQL!
__________________
Khelidan Ultima modifica di khelidan1980 : 05-06-2011 alle 01:16. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:56.




















