SELECT * FROM TMP_importFasi tf INNER JOIN ETS_ScipHalf.dbo.commesse c ON dbo.f_padLeft(tf.NumComm, 4,'0')=c.NrComme AND dbo.f_padLeft(tf.anno, 4,'0')=c.Anno select * from AnagClienti select * from AnagProgetti select * from AnagFasi SELECT * FROM ETS_ScipHalf.dbo.commesse -- step 0: creo clienti! SELECT DISTINCT Commitente INTO TMP_RawClienti FROM ETS_ScipHalf.dbo.commesse INSERT INTO AnagClienti(RagSociale) SELECT Commitente from TMP_RawClienti -- step 1: creo progetti (tutti) INATTIVI INSERT INTO AnagProgetti(idxCliente, nomeProj, descrProj, attivo, codExt, avvio, chiusura) SELECT ac.idxCliente, NrComme+'-'+Anno as nomeProj, Descrizione as descrProj, 0, NrProtocollo as codExt, dataApe as avvio, DataSca as chiusura FROM ETS_ScipHalf.dbo.commesse c INNER JOIN AnagClienti ac ON c.Commitente=ac.RagSociale -- step 2: indico attivi solo i progetti che ho trovato da tam import UPDATE ap SET Attivo = 1 FROM AnagProgetti ap INNER JOIN TMP_importFasi tif ON ap.nomeProj = dbo.f_padLeft(tif.NumComm, 4,'0') +'-'+dbo.f_padLeft(tif.anno, 4,'0') -- step 3: creo fasi MACRO (ancestor) da TUTTI i progetti ATTIVI INSERT INTO AnagFasi( idxProgetto, codFase, idxFaseAncest, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo, budgetTime, budgetMoney) SELECT idxProgetto, '' as codFase, 0 as idxFaseAncest, nomeProj, descrProj, 0 as enabTime, 0 as enabMon, Attivo, 0 as bdgTim, 0 as bdgMon FROM AnagProgetti ap WHERE attivo = 1 -- step 4: creo vere (sotto) fasi INSERT INTO AnagFasi( idxProgetto, codFase, idxFaseAncest, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo, budgetTime, budgetMoney) SELECT af.idxProgetto, '' as codFase, af.idxFase AS idxFaseAncest, tif.NomeFase, tif.NomeFase, 1 as enabTime, 0 as enabMon, 1, 0 as bdgTim, 0 as bdgMon FROM AnagFasi af INNER JOIN TMP_importFasi tif ON af.nomeFase = dbo.f_padLeft(tif.NumComm, 4,'0') +'-'+dbo.f_padLeft(tif.anno, 4,'0') -- step 5: sistemo progetti con date apertura/chiusura nulle e oldIdx nulli... UPDATE AnagProgetti SET avvio = '1900-01-01' where avvio IS NULL UPDATE AnagProgetti SET chiusura = '2100-12-31' where chiusura IS NULL UPDATE AnagProgetti SET OldIdx =-1 WHERE OldIdx is null --- update finale -- inserisco commesse mancanti INSERT INTO AnagFasi( idxProgetto, codFase, idxFaseAncest, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo, budgetTime, budgetMoney) SELECT idxProgetto, '' as codFase, 0 as idxFaseAncest, nomeProj, descrProj, 0 as enabTime, 0 as enabMon, Attivo, 0 as bdgTim, 0 as bdgMon FROM AnagProgetti ap WHERE attivo = 0 -- inserisco sottofasi (fasi) mancanti a "generale" INSERT INTO AnagFasi( idxProgetto, codFase, idxFaseAncest, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo, budgetTime, budgetMoney) SELECT af.idxProgetto, '' as codFase, af.idxFase AS idxFaseAncest, 'GENERALE', 'GENERALE', 1 as enabTime, 0 as enabMon, 0, 0 as bdgTim, 0 as bdgMon FROM AnagFasi af WHERE af.idxFase > 493