|
Archives of the TeradataForumMessage Posted: Thu, 01 Jul 2004 @ 15:20:17 GMT
This is a topic that comes up fairly often. I found a solution the other day that seems fairly simple and I don't think that it has been mentioned. It involves the use of the ROW_NUMBER() function. Basically I built two tables a Staging table and the final one. The staging table (call it T_STAG_DIM_DEFN) would have one column, DIM_CD (could have all of the keys) with an UPI on that code. The final table (call it T_DIM_DEFN) has the DIM_CD and DIM_ID. I used VARCHAR for DIM_CD and INTEGER for DIM_ID. Load the data into T_STAG_DIM_DEFN and since T_DIM_DEFN may or may not be empty, Row NUMBER runs from 1 to ... I need the current maximum value in the table: Then run SELECT (ROW_NUMBER() OVER (ORDER BY DIM_CD)) + (COALESCE(MAXDIM_ID,0)), DIM_CD, DIM_NM FROM T_STAG_DIM_DEFN, (SELECT MAX(DIM_ID) FROM T_DIM_DEFN) maxdim(MAXDIM_ID) WHERE DIM_CD NOT IN (SELECT DIM_CD FROM T_DIM_DEFN) Since you have a write lock on the table, there are no semaphore issues. and it should run in parallel. Glen
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||