![]() |
|
Archives of the TeradataForumMessage Posted: Wed, 12 Apr 2006 @ 19:14:55 GMT
Ole / Hello: The following algorithm: - Can be used in UPSERT scenarios (generates surrogate keys just for the new records. - Is fast. - Leaves no 'holes'. - Deals with duplicates in the input table.
.....
FROM TabelaFonte T0
JOIN
(
SELECT COALESCE(T2.SURROGATE_KEY,
SUM (CASE WHEN T2.SURROGATE_KEY IS NULL THEN 1 ELSE 0 END)
OVER( ORDER BY T1.CHAVE_SISTEMA_FONTE ROWS UNBOUNDED
PRECEDING ) + TM.MAX_GERADA
) AS SURROGATE_KEY,
T1.CHAVE_SISTEMA_FONTE
FROM ( SEL COALESCE( MAX(SURROGATE_KEY), -2147483648) AS MAX_GERADA
FROM TabelaDestino ) TM
CROSS JOIN
( SEL CHAVE_SISTEMA_FONTE FROM TabelaFonte GROUP BY
CHAVE_SISTEMA_FONTE ) T1
LEFT OUTER JOIN
TabelaDestino T2
ON T1.CHAVE_SISTEMA_FONTE = T2.CHAVE_SISTEMA_FONTE
) AS T2
ON T0.CHAVE_SISTEMA_FONTE = T2.CHAVE_SISTEMA_FONTE
;
CHAVE_SISTEMA_FONTE = NATURAL KEY
TabelaFonte = SOURCE TABLE
TabelaDestino = TARGET TABLE
Cheers, Cesar Ureta
| ||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
| Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||