Hi,

I've a table with this fields:

KXDF_SOC.ANNO
, KXDF_SOC.CONTATORE
, KXDF_SOC.CARTELLA
, KXDF_SOC.COGNOME_NOME
, KXDF_SOC.DATA_NASCITA
, KXDF_SOC.ETA
, KXDF_SOC.SESSO
, KXDF_SOC.COD_COMUNE_NASCITA
, KXDF_SOC.COMUNE_NASCITA
, KXDF_SOC.COD_CITTADINANZA
, KXDF_SOC.CITTADINANZA
, KXDF_SOC.UE_EXTRAUE
, KXDF_SOC.CODICE_SANITARIO
, KXDF_SOC.CODICE_FISCALE
, KXDF_SOC.CODICE_USL
, KXDF_SOC.DATA_APERTURA
, KXDF_SOC.DATA_CHIUSURA
, KXDF_SOC.MOTIVO_CHIUSURA
, KXDF_SOC.COD_COMUNE_RES
, KXDF_SOC.COMUNE_RES
, KXDF_SOC.INDIRIZZO_RES
, KXDF_SOC.AREADIS_RES
, KXDF_SOC.COD_COMUNE_DOM
, KXDF_SOC.COMUNE_DOM
, KXDF_SOC.INDIRIZZO_DOM
, KXDF_SOC.AREADIS_DOM
, KXDF_SOC.ZONA
, KXDF_SOC.DISTRETTO
, KXDF_SOC.COD_MMG
, KXDF_SOC.MMG
, KXDF_SOC.COD_FISC_MMG
, KXDF_SOC.REGIONE
, KXDF_SOC.USL_RESIDENZA
, KXDF_SOC.SOC_DATA_APERTURA
, KXDF_SOC.SOC_DATA_CHIUSURA
, KXDF_SOC.SOC_COD_PRESIDIO
, KXDF_SOC.SOC_PRESIDIO
, KXDF_SOC.SOC_COD_DISTRETTO
, KXDF_SOC.SOC_DISTRETTO
, KXDF_SOC.SOC_ZONA
, KXDF_SOC.SOC_REFERENTE
, KXDF_SOC.SOC_TIPO_UTENTE
, KXDF_SOC.SOC_MOTIVO
, KXDF_SOC.SOC_SEGNALANTE
, KXDF_SOC.SOC_PROBLEMA
, KXDF_SOC.SOC_AREA_INTERV
, KXDF_SOC.SOC_SETTORE_INTERV
, KXDF_SOC.ASS_SOLO_SOC
, KXDF_SOC.SOC_REDDITO_MENSILE

and I must execute this query:
update sins_soc set
(soc_stato_civile,
soc_titolo_studio,
soc_professione,
soc_scuola,
soc_perc_invalidita,
soc_ass_accomp,
soc_data_invalidita,
soc_autosufficiente,
soc_data_noautosuff,
soc_handicap,
soc_tipo_handicap,
soc_ass_terap,
soc_esenz_ticket,
soc_figucoll,
soc_badante,
soc_assfam
-- ---------------------------------------
) =
(select
staciv.desciv,
titstu.descriz_ts,
pospro.descrizione,
scuola.des_scuola,
anagra_s.invalidita,
null, -- decode(anagra_s.ass_accomp, '1', 'S', 'N'),
anagra_s.invalidita_data,
decode(anagra_s.autosuff, 'S', 'S', 'N'),
anagra_s.autosuff_data,
trim(tab_voci_soc3.tab_descrizione),
trim(tab_voci_soc4.tab_descrizione),
null, -- anagra_s.ass_terap,
null, -- anagra_s.esenz_ticket,
anagra_s.figucoll,
null, -- anagra_s.badante,
anagra_s.assfam
-----------------------------------------
from sins.anagra_s,
sins.staciv,
sins.titstu,
sins.pospro,
sins.scuola,
sins.tab_voci tab_voci_soc3,
sins.tab_voci tab_voci_soc4
where sins_soc.cartella = anagra_s.n_cartella
and anagra_s.data_variazione =
(select max(data_variazione) from sins.anagra_s
where sins_soc.cartella = anagra_s.n_cartella)
and anagra_s.stato_anagrafico=staciv.cd_civ (+)
and anagra_s.titolo_studio =titstu.codice_ts (+)
and anagra_s.cond_profes =pospro.codice (+)
and anagra_s.scuola =scuola.cd_scuola (+)
and ('HANDIC'= tab_voci_soc3.tab_cod (+)
and anagra_s.handicap=tab_voci_soc3.tab_val (+))
and ('HANTIP'= tab_voci_soc4.tab_cod (+)
and anagra_s.handicap=tab_voci_soc4.tab_val (+)))
where anno=anno_elab;

To do this I created this transformation: table input-> script sql->select values ->insert/update

The table input is:

SELECT
KXDF_SOC.ANNO
, KXDF_SOC.CONTATORE
, KXDF_SOC.CARTELLA
, KXDF_SOC.COGNOME_NOME
, KXDF_SOC.DATA_NASCITA
, KXDF_SOC.ETA
, KXDF_SOC.SESSO
, KXDF_SOC.COD_COMUNE_NASCITA
, KXDF_SOC.COMUNE_NASCITA
, KXDF_SOC.COD_CITTADINANZA
, KXDF_SOC.CITTADINANZA
, KXDF_SOC.UE_EXTRAUE
, KXDF_SOC.CODICE_SANITARIO
, KXDF_SOC.CODICE_FISCALE
, KXDF_SOC.CODICE_USL
, KXDF_SOC.DATA_APERTURA
, KXDF_SOC.DATA_CHIUSURA
, KXDF_SOC.MOTIVO_CHIUSURA
, KXDF_SOC.COD_COMUNE_RES
, KXDF_SOC.COMUNE_RES
, KXDF_SOC.INDIRIZZO_RES
, KXDF_SOC.AREADIS_RES
, KXDF_SOC.COD_COMUNE_DOM
, KXDF_SOC.COMUNE_DOM
, KXDF_SOC.INDIRIZZO_DOM
, KXDF_SOC.AREADIS_DOM
, KXDF_SOC.ZONA
, KXDF_SOC.DISTRETTO
, KXDF_SOC.COD_MMG
, KXDF_SOC.MMG
, KXDF_SOC.COD_FISC_MMG
, KXDF_SOC.REGIONE
, KXDF_SOC.USL_RESIDENZA
, KXDF_SOC.SOC_DATA_APERTURA
, KXDF_SOC.SOC_DATA_CHIUSURA
, KXDF_SOC.SOC_COD_PRESIDIO
, KXDF_SOC.SOC_PRESIDIO
, KXDF_SOC.SOC_COD_DISTRETTO
, KXDF_SOC.SOC_DISTRETTO
, KXDF_SOC.SOC_ZONA
, KXDF_SOC.SOC_REFERENTE
, KXDF_SOC.SOC_TIPO_UTENTE
, KXDF_SOC.SOC_MOTIVO
, KXDF_SOC.SOC_SEGNALANTE
, KXDF_SOC.SOC_PROBLEMA
, KXDF_SOC.SOC_AREA_INTERV
, KXDF_SOC.SOC_SETTORE_INTERV
, KXDF_SOC.ASS_SOLO_SOC
, KXDF_SOC.SOC_REDDITO_MENSILE
, staciv.desciv as "soc_stato_civile"
, titstu.descriz_ts as "soc_titolo_studio"
, pospro.descrizione as "soc_professione"
, scuola.des_scuola as "soc_scuola"
, anagra_s.invalidita as "soc_perc_invalidita"
, null as "soc_ass_accomp"
, anagra_s.invalidita_data as "soc_data_invalidita"
, decode(anagra_s.autosuff, 'S', 'S', 'N') as "soc_autosufficiente"
, anagra_s.autosuff_data as "soc_data_noautosuff"
, trim(tab_voci_soc3.tab_descrizione) as "soc_handicap"
, trim(tab_voci_soc4.tab_descrizione) as "soc_tipo_handicap"
, null as "soc_ass_terap"
, null as "soc_esenz_ticket"
, anagra_s.figucoll as "soc_figucoll"
, null as "soc_badante"
, anagra_s.assfam as "soc_assfam"


FROM DATAFINDER.KXDF_SOC, sinsnt_test.anagra_s, sinsnt_test.staciv, sinsnt_test.titstu, sinsnt_test.pospro, sinsnt_test.scuola, sinsnt_test.tab_voci tab_voci_soc3,
sinsnt_test.tab_voci tab_voci_soc4


where kxdf_soc.cartella = anagra_s.n_cartella
and anagra_s.data_variazione =
(select max(data_variazione) from sinsnt_test.anagra_s
where kxdf_soc.cartella = anagra_s.n_cartella)
and anagra_s.stato_anagrafico=staciv.cd_civ
and anagra_s.titolo_studio =titstu.codice_ts
and anagra_s.cond_profes =pospro.codice
and anagra_s.scuola =scuola.cd_scuola
and ('HANDIC'= tab_voci_soc3.tab_cod
and anagra_s.handicap=tab_voci_soc3.tab_val)
and ('HANTIP'= tab_voci_soc4.tab_cod
and anagra_s.handicap=tab_voci_soc4.tab_val)

the script sql is:

update sins_soc set
(soc_stato_civile,
soc_titolo_studio,
soc_professione,
soc_scuola,
soc_perc_invalidita,
soc_ass_accomp,
soc_data_invalidita,
soc_autosufficiente,
soc_data_noautosuff,
soc_handicap,
soc_tipo_handicap,
soc_ass_terap,
soc_esenz_ticket,
soc_figucoll,
soc_badante,
soc_assfam
)


where anno=to_number(to_char(sysdate, 'YYYY'));

Is it correct?