xp2400
29-12-2020, 16:07
Ciao a tutti e auguri. Ma tanto siamo sempre al chiodo. questo il problema.
NB sqlserver 15, quindi tutto a disposizione (UNPIVOT, CROSS APPLY ecc.)
ho una tabella che chiamiamo Giocatori (id, Nome).
1, Messi
2, Ronaldo
poi tante tabelle (almeno 6), che mi portano degli attributi, e validità temporale, tipo
tabStipendi (idGiocatore, DataInizio,DataFine, StipendioEuro)
1, 01/01/2020, 28/02/2020, 10000
1, 28/02/2020, 31/03/2020, 10050
1, 01/04/2020, 01/01/2099, 11000
2, 01/01/2020, 04/07/2020, 20000
2, 05/07/2020, 01/09/2020, 20500
2, 02/09/2020, 01/01/2099, 20700
tabSquadra (idGiocatore, DataInizio, DataFine, Squadra)
1, 01/01/2020, 24/02/2020, Inter
1, 25/02/2020, 31/03/2020, Roma
1, 01/04/2020, 01/01/2099, Juve
2, 01/01/2020, 04/07/2020, Barcellona
2, 05/07/2020, 01/10/2020, Juve
2, 02/10/2020, 01/01/2099, Barcellona
e via cosi.
In queste tabelle, tutte di struttura identica, non ho mai record null, c'è sempre almeno un record della tabella giocatori, e non ci sono - per ogni tabella- periodo sovrapposti.
Risultato che vorrei (dovrei.. ed entro il 7 gennaio :D ) è ricostruire i record in questo modo
GiocatoriStorico (id,Messi, DataInizio, DataFIne, Squadra, Stipendio)
1, Messi ,01/01/2020 ,24/02/2020, Inter, 10000
1, Messi, 25/02/2020, 28/02/2020, Roma,10000
1, Messi, 01/03/2020, 31/03/2020, Roma, 10050
1, Messi, 01/04/2020, 01/01/2020, Juve, 11000
2, Ronaldo 01/01/2020,04/07/2020, Barcellona, 20000
2, Ronaldo 05/07/2020, 01/09/2020, Juve, 20500
2, Ronaldo 02/09/2020,01/10/2020, Juve, 20700
2, Ronaldo, 02/10/2020,01/01/2099, Barcellona, 20700
nelle tabelle degli attributi non ho mai record a null e sovrapposti tra di loro.
si tratta di fare le intersezioni di ogni periodo..
ho provato con union, full join, ma in realtà sto andando assolutamente a caso.
Credo sia un problema relativamente semplice che avrete già risolto in tutti i DWH del mondo...:sofico: io mi sono incartato in maniera mostruosa.
grazie dell'aiuto
NB sqlserver 15, quindi tutto a disposizione (UNPIVOT, CROSS APPLY ecc.)
ho una tabella che chiamiamo Giocatori (id, Nome).
1, Messi
2, Ronaldo
poi tante tabelle (almeno 6), che mi portano degli attributi, e validità temporale, tipo
tabStipendi (idGiocatore, DataInizio,DataFine, StipendioEuro)
1, 01/01/2020, 28/02/2020, 10000
1, 28/02/2020, 31/03/2020, 10050
1, 01/04/2020, 01/01/2099, 11000
2, 01/01/2020, 04/07/2020, 20000
2, 05/07/2020, 01/09/2020, 20500
2, 02/09/2020, 01/01/2099, 20700
tabSquadra (idGiocatore, DataInizio, DataFine, Squadra)
1, 01/01/2020, 24/02/2020, Inter
1, 25/02/2020, 31/03/2020, Roma
1, 01/04/2020, 01/01/2099, Juve
2, 01/01/2020, 04/07/2020, Barcellona
2, 05/07/2020, 01/10/2020, Juve
2, 02/10/2020, 01/01/2099, Barcellona
e via cosi.
In queste tabelle, tutte di struttura identica, non ho mai record null, c'è sempre almeno un record della tabella giocatori, e non ci sono - per ogni tabella- periodo sovrapposti.
Risultato che vorrei (dovrei.. ed entro il 7 gennaio :D ) è ricostruire i record in questo modo
GiocatoriStorico (id,Messi, DataInizio, DataFIne, Squadra, Stipendio)
1, Messi ,01/01/2020 ,24/02/2020, Inter, 10000
1, Messi, 25/02/2020, 28/02/2020, Roma,10000
1, Messi, 01/03/2020, 31/03/2020, Roma, 10050
1, Messi, 01/04/2020, 01/01/2020, Juve, 11000
2, Ronaldo 01/01/2020,04/07/2020, Barcellona, 20000
2, Ronaldo 05/07/2020, 01/09/2020, Juve, 20500
2, Ronaldo 02/09/2020,01/10/2020, Juve, 20700
2, Ronaldo, 02/10/2020,01/01/2099, Barcellona, 20700
nelle tabelle degli attributi non ho mai record a null e sovrapposti tra di loro.
si tratta di fare le intersezioni di ogni periodo..
ho provato con union, full join, ma in realtà sto andando assolutamente a caso.
Credo sia un problema relativamente semplice che avrete già risolto in tutti i DWH del mondo...:sofico: io mi sono incartato in maniera mostruosa.
grazie dell'aiuto