This is the table that stores the data I need: CREATE TABLE COST ( PART_ID VARCHAR2(9 BYTE) NOT NULL, BEGIN_DATE DATE, COGNIZANCE_CODE VARCHAR2(2 BYTE), MATERIAL_CNTL_CODE VARCHAR2(1 BYTE), UNIT_PRICE_AMT NUMBER(14,2), END_DATE DATE, REPAIR_NET_PRICE_AMT NUMBER(10,2), LAST_ALTER_TS DATE ) CREATE UNIQUE INDEX COST_PK ON COST (PART_ID, BEGIN_DATE) ALTER TABLE COST ADD ( CONSTRAINT COST_PK PRIMARY KEY (PART_ID, BEGIN_DATE) This is sample data in the cost table above: PART_ID BEGIN_DATE COGNIZANCE_CODE MATERIAL_CNTL_CODE UNIT_PRICE_AMT END_DATE REPAIR_NET_PRICE_AMT LAST_ALTER_TS 000000158 5/25/2006 9L 1584.47 10/14/2006 0 5/23/2006 10:28:09 PM 000000158 10/1/2002 9L 1902.02 10/27/2003 0 5/18/2003 7:29:00 PM 000000158 12/13/2006 9B 1698.35 0 12/12/2006 1:48:59 AM 000000158 10/28/2003 9L 1572.42 5/24/2006 0 10/27/2003 11:21:39 AM 000000158 10/15/2006 9L 1698.35 12/12/2006 0 10/14/2006 11:33:00 AM 000000158 10/1/1999 9L 2188.91 12/31/2001 12/1/2004 4:13:37 PM 000000158 1/1/2002 9L 2526.17 9/30/2002 12/1/2004 4:13:37 PM 000000165 1/1/2004 D 66832 12/1/2004 4:13:37 PM 000000165 10/1/1999 D 50940.69 12/31/2001 12/1/2004 4:13:37 PM 000000165 1/1/2002 D 60980.96 12/31/2002 12/1/2004 4:13:37 PM 000000165 1/1/2003 D 66912 12/31/2003 12/1/2004 4:13:37 PM This is the table I will loading the above data into - I only want to insert into this table, the latest cost record, for each part record, in the above cost table (I highlighted these records red above): CREATE TABLE PART ( PART CHAR(9 BYTE) NOT NULL, COG CHAR(2 BYTE), FSC CHAR(4 BYTE), MCC CHAR(1 BYTE), REPAIR_NET_PRICE NUMBER(10,2), ROUTING_ID_CODE CHAR(3 BYTE), SECURITY_CLASSIFICATION_CODE CHAR(1 BYTE), SMIC CHAR(2 BYTE), UNIT_OF_ISSUE CHAR(2 BYTE) NOT NULL, UNIT_PRICE NUMBER(12,2) NOT NULL, ACQUISITION_ADVICE_CODE CHAR(1 BYTE) NOT NULL, QUANTITY_PER_UNIT_PACKAGE CHAR(1 BYTE) NOT NULL, SOURCE_OF_SUPPLY CHAR(3 BYTE) NOT NULL, SLC CHAR(1 BYTE) NOT NULL, ITEM_NAME VARCHAR2(50 BYTE) ) CREATE INDEX PART_PK ON PART (PART) ALTER TABLE PART ADD ( CONSTRAINT PART_PK PRIMARY KEY (PART) Using your example, I compiled the below statement. It appears to select the correct information: select part_id, cognizance_code, material_cntl_code, unit_price_amt repair_net_price_amt from ( select part_id, begin_date, cognizance_code, material_cntl_code, unit_price_amt, repair_net_price_amt, row_number () over (partition by part_id order by begin_date desc) rn from cost) where rn = 1 When I add the below insert statement above the select statement insert into part_stage (part, cog, mcc, unit_price, repair_net_price) Making the total statement look like the below - I get an ORA-00947: not enough values message. insert into part_stage (part, cog, mcc, unit_price, repair_net_price) select part_id, cognizance_code, material_cntl_code, unit_price_amt repair_net_price_amt from ( select part_id, begin_date, cognizance_code, material_cntl_code, unit_price_amt, repair_net_price_amt, row_number () over (partition by part_id order by begin_date desc) rn from cost) where rn = 1 What do you suspect is the problem? Thanks, Sandy