SELECT a.* FROM
FACTOR_STG_SAM a
WHERE
NOT EXISTS (SELECT
'x'
FROM
FACTOR_STG_SAM b
WHERE
a.NAME = b.NAME
AND a.FACTOR_ATTR_CONTEXT = b.FACTOR_ATTR_CONTEXT
AND a.FACTOR_ATTRIBUTE = b.FACTOR_ATTRIBUTE
AND a.ATTR_VALUE = b.ATTR_VALUE
AND NVL(a.ADJUSTMENT_FACTOR,0) <> NVL(b.ADJUSTMENT_FACTOR,0)
AND a.START_DATE_ACTIVE = b.START_DATE_ACTIVE
AND a.END_DATE_ACTIVE = b.END_DATE_ACTIVE
);
sample-date.xls
SELECT a.* FROM
FACTOR_STG_SAM a
WHERE
rowid = (SELECT
min(rowid)
FROM
FACTOR_STG_SAM b
WHERE
a.NAME = b.NAME
AND a.FACTOR_ATTR_CONTEXT = b.FACTOR_ATTR_CONTEXT
AND a.FACTOR_ATTRIBUTE = b.FACTOR_ATTRIBUTE
AND a.ATTR_VALUE = b.ATTR_VALUE
AND NVL(a.ADJUSTMENT_FACTOR,0) <> NVL(b.ADJUSTMENT_FACTOR,0)
AND a.START_DATE_ACTIVE = b.START_DATE_ACTIVE
AND a.END_DATE_ACTIVE = b.END_DATE_ACTIVE
);
SELECT a.* FROM
FACTOR_STG_SAM a
WHERE
rowid = (SELECT
min(rowid)
FROM
FACTOR_STG_SAM b
WHERE
a.NAME = b.NAME
AND a.FACTOR_ATTR_CONTEXT = b.FACTOR_ATTR_CONTEXT
AND a.FACTOR_ATTRIBUTE = b.FACTOR_ATTRIBUTE
AND a.ATTR_VALUE = b.ATTR_VALUE
AND NVL(a.ADJUSTMENT_FACTOR,0) = NVL(b.ADJUSTMENT_FACTOR,0)
AND a.START_DATE_ACTIVE = b.START_DATE_ACTIVE
AND a.END_DATE_ACTIVE = b.END_DATE_ACTIVE
);
SQL> SELECT a.* FROM
2 FACTOR_STG_SAM a
3 WHERE
4 rowid = (SELECT
5 min(rowid)
6 FROM
7 FACTOR_STG_SAM b
8 WHERE
9 a.NAME = b.NAME
10 AND a.FACTOR_ATTR_CONTEXT = b.FACTOR_ATTR_CONTEX
11 AND a.FACTOR_ATTRIBUTE = b.FACTOR_ATTRIBUTE
12 AND a.ATTR_VALUE = b.ATTR_VALUE
13 AND NVL(a.ADJUSTMENT_FACTOR,0) = NVL(b.ADJUSTMENR,0)
14 AND a.START_DATE_ACTIVE = b.START_DATE_ACTIVE
15 AND a.END_DATE_ACTIVE = b.END_DATE_ACTIVE
16 );
NAME
--------------------------------------------------
FACTOR_ATTR_CONTEXT
--------------------------------------------------
FACTOR_ATTRIBUTE
--------------------------------------------------
ATTR_VALUE ADJUSTMENT_FACTOR
-------------------------------------------------- -----------------
START_DATE_ACTIVE END_DATE_ACTIVE B LINE_INDEX
-------------------- -------------------- - ----------
LEVEL3.2
CUST_HIERARCHY
CUST_LEVEL3
CHW .4
10-SEP-1996 00:00:00 31-DEC-2010 00:00:00 B 1
LEVEL3.2
PRODUCT_ LINE
PRODUCT_LINE
AM
10-SEP-1996 00:00:00 31-DEC-2010 00:00:00 A 1
LEVEL3.2
WRLD_REGION_HIERARCHY
WRLDREGION_LEVEL2
AP
10-SEP-1996 00:00:00 31-DEC-2010 00:00:00 A 1
LEVEL3.2
WRLD_REGION_HIERARCHY
WRLDREGION_LEVEL2
NASA
10-SEP-1996 00:00:00 31-DEC-2010 00:00:00 A 3
LEVEL3.2
CUST_HIERARCHY
CUST_LEVEL3
CHW .4834
10-SEP-1996 00:00:00 31-DEC-2010 00:00:00 B 2
You are missing 1 thing from your sub query. Â There is no way to distinguish the original row you want to keep. Â This is a way to do it, but by no means the only way.
Open in new window