Using Dense Rank
Hello,
I am using ORACLE 10g and having an error when updating a table and generating ORA-30926 'Unable to get a stable set of rows in the source tables'.
I create a temporary working table with records pulled from 2 different tables. The query to make the temp table uses
the DENSE RANK FUNCTION to eliminate any duplicates. But, I am still getting duplicate records.
When it is time to update my primary table with the records from the temp table, it sees the duplicates and
generates the error. I have all the code to create the problem. I think I almost have it but maybe need different query structure.Any help is appreciated.
-- Create table
create table CUSTOMER
EMP_ID NUMBER(4) ,
CUST_ID NUMBER(9) not null,
CONTACT_CD VARCHAR2(1),
PURCHASE_DATE DATE,
NEW_CUST_CD VARCHAR2(1),
CUST_NAME VARCHAR2(25)
-- Create table
create table DEFERRED_MAILING
CUST_ID NUMBER(9) not null,
EMP_ID NUMBER(4) not null,
PURCHASE_DATE DATE
insert into customer ( emp_id, cust_id, contact_cd,PURCHASE_DATE, NEW_CUST_CD,cust_name)
values (10,444,'Y',to_date('11-01-2011 16:11:05', 'dd-mm-yyyy hh24:mi:ss'),'Y','J.J.BROWN');
insert into customer ( emp_id, cust_id,contact_cd, PURCHASE_DATE, NEW_CUST_CD,cust_name)
values (10,444,'Y',to_date('11-01-2011 16:11:05', 'dd-mm-yyyy hh24:mi:ss'),'Y','J.BROWN');
insert into deferred_mailing (cust_id, emp_id, purchase_date)
values (444, 10, to_date('11-01-2011 16:11:05', 'dd-mm-yyyy hh24:mi:ss'));
create table UPDTE_DEFERRED_MAILING_RECORDS nologging as
SELECT a.CUST_ID,
a.EMP_ID,
a.PURCHASE_DATE,
a.DM_ROW_ID,
a.drank,
c.CONTACT_CD,
c.NEW_CUST_CD/*,
TRANS_ID_SEQ.NEXTVAL as TRANS_ID*/
FROM (SELECT a.ROWID AS DM_ROW_ID,
a.CUST_ID,
a.EMP_ID,
a.PURCHASE_DATE,
dense_rank() over(PARTITION BY a.CUST_ID, a.EMP_ID ORDER
BY a.PURCHASE_DATE DESC, a.ROWID) DRANK
FROM deferred_mailing a) a,
customer c
WHERE a.CUST_ID = c.CUST_ID
AND a.EMP_ID = c.EMP_ID
AND (a.PURCHASE_DATE <= c.PURCHASE_DATE OR
c.PURCHASE_DATE IS NULL);
SELECT * FROM UPDTE_DEFERRED_MAILING_RECORDS;
}
Please try this
create table UPDTE_DEFERRED_MAILING_RECORDS nologging as
SELECT distinct a.CUST_ID,
a.EMP_ID,
a.PURCHASE_DATE,
a.drank,
c.CONTACT_CD,
c.NEW_CUST_CD,
a.DM_ROW_ID
FROM (SELECT a.ROWID AS DM_ROW_ID,
a.CUST_ID,
a.EMP_ID,
a.PURCHASE_DATE,
dense_rank() over(PARTITION BY a.CUST_ID, a.EMP_ID ORDER
BY a.PURCHASE_DATE DESC, a.ROWID) DRANK
FROM deferred_mailing a) a,
customer c
WHERE a.CUST_ID = c.CUST_ID
AND a.EMP_ID = c.EMP_ID
AND (a.PURCHASE_DATE <= c.PURCHASE_DATE OR
c.PURCHASE_DATE IS NULL)
and a.drank=1;
The query you've posted is behaving according to the expectations. The inner select is returning one row and the outer is returning two as the
WHERE a.CUST_ID = c.CUST_ID
AND a.EMP_ID = c.EMP_ID
AND (a.PURCHASE_DATE <= c.PURCHASE_DATE OR
c.PURCHASE_DATE IS NULL)
conditions are seeing two rows in the table customer.
I've added the a.drank=1 clause to skip the duplicates from the inner table and distinct in the final result to remove duplicates from the overall query result.
For eg, if you have one more row in the deferred_mailing like this
SQL> select * from DEFERRED_MAILING;
CUST_ID EMP_ID PURCHASE_
444 10 11-JAN-11
444 10 11-JAN-11
then the query without "a.drank=1" will return 4 rows like this by the outer query.
CUST_ID EMP_ID PURCHASE_ DM_ROW_ID DRANK C N
444 10 11-JAN-11 AAATi2AAGAAAACcAAB 2 Y Y
444 10 11-JAN-11 AAATi2AAGAAAACcAAA 1 Y Y
444 10 11-JAN-11 AAATi2AAGAAAACcAAB 2 Y Y
444 10 11-JAN-11 AAATi2AAGAAAACcAAA 1 Y Y
It'll return the below even if we use distinct on the same query(i.e. without a.drank=1)
CUST_ID EMP_ID PURCHASE_ DM_ROW_ID DRANK C N
444 10 11-JAN-11 AAATi2AAGAAAACcAAB 2 Y Y
444 10 11-JAN-11 AAATi2AAGAAAACcAAA 1 Y Y
which contains duplicates again.
So, we need a combination of distinct and dense here.
btw, Please mark the thread as 'answered', if you feel you got your question answered. This will save the time of others who search for open questions to answer.
Regards,
CSM
Similar Messages
-
Please help me with this query -- i am trying with Dense rank
version 10g
i received a quote for an account. if the same quote is received under different account then i should mark the previous account received as deleted.
please help me .
/* Formatted on 2010/06/28 14:13 (Formatter Plus v4.8.8) */
WITH temp AS
(SELECT '1-11TWQL' quote_id, 'COPS' ACCOUNT, 'Ordered' status,
TO_DATE ('12/23/2009 3:37:54',
'mm/dd/yyyy hh:mi:ss PM'
) captured_date
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'COPS', 'RFS',
TO_DATE ('12/23/2009 3:37:50', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'COPS', 'Rejected',
TO_DATE ('12/23/2009 3:37:52', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:51', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'Ordered',
TO_DATE ('12/23/2009 3:04:24', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'RFS',
TO_DATE ('12/23/2009 3:04:23', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'Rejected',
TO_DATE ('12/23/2009 3:04:22', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'Validated',
TO_DATE ('12/23/2009 3:04:23', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'RFS',
TO_DATE ('3/5/2010 12:04:24', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'RFS',
TO_DATE ('3/16/2010 7:55:50', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'RFS',
TO_DATE ('3/16/2010 7:55:51', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Rejected',
TO_DATE ('3/5/2010 12:04:24', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Rejected',
TO_DATE ('3/16/2010 7:55:50', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Rejected',
TO_DATE ('3/16/2010 7:55:51', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Ordered',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Ordered',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'RFS',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'RFS',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Validated',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Validated',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8Z', 'COPS', 'Validated',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL
UNION ALL
SELECT '1-249A8Z', 'COPS', 'Ordered',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
FROM DUAL)
SELECT quote_id, ACCOUNT, status, captured_date,
DENSE_RANK () OVER (PARTITION BY quote_id ORDER BY quote_id,
ACCOUNT) rn
-- ,CASE DENSE_RANK () OVER (PARTITION BY quote_id ORDER BY quote_id,
-- ACCOUNT)
-- WHEN 1
-- THEN 'Y'
-- ELSE 'N'
-- END deleted_flag
FROM temp
ORDER BY quote_id, captured_date;output required
WITH temp AS
(SELECT '1-11TWQL' quote_id, 'COPS' ACCOUNT, 'Ordered' status,
TO_DATE ('12/23/2009 3:37:54',
'mm/dd/yyyy hh:mi:ss PM'
) captured_date, 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'COPS', 'RFS',
TO_DATE ('12/23/2009 3:37:50', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'COPS', 'Rejected',
TO_DATE ('12/23/2009 3:37:52', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:51', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'Ordered',
TO_DATE ('12/23/2009 3:04:24', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'RFS',
TO_DATE ('12/23/2009 3:04:23', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'Rejected',
TO_DATE ('12/23/2009 3:04:22', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-11TWQL', 'D1', 'Validated',
TO_DATE ('12/23/2009 3:04:23', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'RFS',
TO_DATE ('3/5/2010 12:04:24', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'RFS',
TO_DATE ('3/16/2010 7:55:50', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'RFS',
TO_DATE ('3/16/2010 7:55:51', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Rejected',
TO_DATE ('3/5/2010 12:04:24', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Rejected',
TO_DATE ('3/16/2010 7:55:50', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Rejected',
TO_DATE ('3/16/2010 7:55:51', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'COPS', 'Validated',
TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM'), 'Y' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Ordered',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Ordered',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'RFS',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'RFS',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Validated',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8X', 'D1', 'Validated',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8Z', 'COPS', 'Validated',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL
UNION ALL
SELECT '1-249A8Z', 'COPS', 'Ordered',
TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM'), 'N' deleted_flag
FROM DUAL)
SELECT quote_id, ACCOUNT, status, captured_date, deleted_flag
FROM temp
ORDER BY quote_id, captured_date;try to wrap your query to become an in-line view. use a case statement or decode to your derived column RN from the analytic query of DENSE RANK. either way they both will work.
SQL> WITH temp AS
2 (SELECT '1-11TWQL' quote_id, 'COPS' ACCOUNT, 'Ordered' status,
3 TO_DATE ('12/23/2009 3:37:54',
4 'mm/dd/yyyy hh:mi:ss PM'
5 ) captured_date
6 FROM DUAL
7 UNION ALL
8 SELECT '1-11TWQL', 'COPS', 'RFS',
9 TO_DATE ('12/23/2009 3:37:50', 'mm/dd/yyyy hh:mi:ss PM')
10 FROM DUAL
11 UNION ALL
12 SELECT '1-11TWQL', 'COPS', 'Rejected',
13 TO_DATE ('12/23/2009 3:37:52', 'mm/dd/yyyy hh:mi:ss PM')
14 FROM DUAL
15 UNION ALL
16 SELECT '1-11TWQL', 'COPS', 'Validated',
17 TO_DATE ('12/23/2009 3:37:51', 'mm/dd/yyyy hh:mi:ss PM')
18 FROM DUAL
19 UNION ALL
20 SELECT '1-11TWQL', 'D1', 'Ordered',
21 TO_DATE ('12/23/2009 3:04:24', 'mm/dd/yyyy hh:mi:ss PM')
22 FROM DUAL
23 UNION ALL
24 SELECT '1-11TWQL', 'D1', 'RFS',
25 TO_DATE ('12/23/2009 3:04:23', 'mm/dd/yyyy hh:mi:ss PM')
26 FROM DUAL
27 UNION ALL
28 SELECT '1-11TWQL', 'D1', 'Rejected',
29 TO_DATE ('12/23/2009 3:04:22', 'mm/dd/yyyy hh:mi:ss PM')
30 FROM DUAL
31 UNION ALL
32 SELECT '1-11TWQL', 'D1', 'Validated',
33 TO_DATE ('12/23/2009 3:04:23', 'mm/dd/yyyy hh:mi:ss PM')
34 FROM DUAL
35 UNION ALL
36 SELECT '1-249A8X', 'COPS', 'RFS',
37 TO_DATE ('3/5/2010 12:04:24', 'mm/dd/yyyy hh:mi:ss PM')
38 FROM DUAL
39 UNION ALL
40 SELECT '1-249A8X', 'COPS', 'RFS',
41 TO_DATE ('3/16/2010 7:55:50', 'mm/dd/yyyy hh:mi:ss PM')
42 FROM DUAL
43 UNION ALL
44 SELECT '1-249A8X', 'COPS', 'RFS',
45 TO_DATE ('3/16/2010 7:55:51', 'mm/dd/yyyy hh:mi:ss PM')
46 FROM DUAL
47 UNION ALL
48 SELECT '1-249A8X', 'COPS', 'Rejected',
49 TO_DATE ('3/5/2010 12:04:24', 'mm/dd/yyyy hh:mi:ss PM')
50 FROM DUAL
51 UNION ALL
52 SELECT '1-249A8X', 'COPS', 'Rejected',
53 TO_DATE ('3/16/2010 7:55:50', 'mm/dd/yyyy hh:mi:ss PM')
54 FROM DUAL
55 UNION ALL
56 SELECT '1-249A8X', 'COPS', 'Rejected',
57 TO_DATE ('3/16/2010 7:55:51', 'mm/dd/yyyy hh:mi:ss PM')
58 FROM DUAL
59 UNION ALL
60 SELECT '1-249A8X', 'COPS', 'Validated',
61 TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM')
62 FROM DUAL
63 UNION ALL
64 SELECT '1-249A8X', 'COPS', 'Validated',
65 TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM')
66 FROM DUAL
67 UNION ALL
68 SELECT '1-249A8X', 'COPS', 'Validated',
69 TO_DATE ('12/23/2009 3:37:54', 'mm/dd/yyyy hh:mi:ss PM')
70 FROM DUAL
71 UNION ALL
72 SELECT '1-249A8X', 'D1', 'Ordered',
73 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
74 FROM DUAL
75 UNION ALL
76 SELECT '1-249A8X', 'D1', 'Ordered',
77 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
78 FROM DUAL
79 UNION ALL
80 SELECT '1-249A8X', 'D1', 'RFS',
81 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
82 FROM DUAL
83 UNION ALL
84 SELECT '1-249A8X', 'D1', 'RFS',
85 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
86 FROM DUAL
87 UNION ALL
88 SELECT '1-249A8X', 'D1', 'Validated',
89 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
90 FROM DUAL
91 UNION ALL
92 SELECT '1-249A8X', 'D1', 'Validated',
93 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
94 FROM DUAL
95 UNION ALL
96 SELECT '1-249A8Z', 'COPS', 'Validated',
97 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
98 FROM DUAL
99 UNION ALL
100 SELECT '1-249A8Z', 'COPS', 'Ordered',
101 TO_DATE ('3/26/2010 12:32:27', 'mm/dd/yyyy hh:mi:ss PM')
102 FROM DUAL)
103 select vt.quote_id,
104 vt.account,
105 vt.status,
106 vt.captured_date,
107 case when vt.rn = 1 then 'N'
108 else 'Y'
109 end deleted_flag
110 from (SELECT quote_id, ACCOUNT, status, captured_date,
111 DENSE_RANK () OVER (PARTITION BY quote_id ORDER BY quote_id, ACCOUNT) rn
112 FROM temp
113 ORDER BY quote_id, captured_date) vt;
QUOTE_ID ACCOUNT STATUS CAPTURED_DATE DELETED_FLAG
1-11TWQL D1 Rejected 23-Dec-2009 3 Y
1-11TWQL D1 RFS 23-Dec-2009 3 Y
1-11TWQL D1 Validated 23-Dec-2009 3 Y
1-11TWQL D1 Ordered 23-Dec-2009 3 Y
1-11TWQL COPS RFS 23-Dec-2009 3 N
1-11TWQL COPS Validated 23-Dec-2009 3 N
1-11TWQL COPS Rejected 23-Dec-2009 3 N
1-11TWQL COPS Ordered 23-Dec-2009 3 N
1-249A8X COPS Validated 23-Dec-2009 3 N
1-249A8X COPS Validated 23-Dec-2009 3 N
1-249A8X COPS Validated 23-Dec-2009 3 N
1-249A8X COPS RFS 05-Mar-2010 1 N
1-249A8X COPS Rejected 05-Mar-2010 1 N
1-249A8X COPS RFS 16-Mar-2010 7 N
1-249A8X COPS Rejected 16-Mar-2010 7 N
1-249A8X COPS Rejected 16-Mar-2010 7 N
1-249A8X COPS RFS 16-Mar-2010 7 N
1-249A8X D1 Ordered 26-Mar-2010 1 Y
1-249A8X D1 Ordered 26-Mar-2010 1 Y
1-249A8X D1 RFS 26-Mar-2010 1 Y
1-249A8X D1 RFS 26-Mar-2010 1 Y
1-249A8X D1 Validated 26-Mar-2010 1 Y
1-249A8X D1 Validated 26-Mar-2010 1 Y
1-249A8Z COPS Validated 26-Mar-2010 1 N
1-249A8Z COPS Ordered 26-Mar-2010 1 N
25 rows selected
SQL> -
Hi All,
I am working on Oracle BI Publisher. Can we apply Dense Rank on a column directly in the template? I don't want to change the total query for this, is there any way to do in template? if yes please tell me how can we do.
Any suggestion would be greatly appreciated.
Thanks in advance,
Anil.Anil
I think it can be done in XSL but its going to take some effort. You might be better using the db to provide the record ranking as a value in the resulting XML. Then its just a case of sorting on the ranking values.
Regards
tim -
Using the Rank() function in 8i
I have a table that holds multiple transactions and amounts for each person (each person uniquely identified by an id). For simplicity's sake, the let's say that the table only has four columns and looks like this:
PID NUMBER(8)
TID VARCHAR2(10)
AMT NUMBER(14,2)
CMPN VARCHAR2(10)
I need to be able to sum the various rows by person, and then calc the total sum(amt)of various percentages of people from the table, for example - What is the total/combined sum(amt) for the top 10% of the people, 'top' meaning people with the highest sum(amt)?
Of course I know how many rows I need to sum, because I know how many distinct people exist.
Unfortunately, I can't use RowId, because the order by is executed after the RowId limiting clause, not before, so the query would limit the rows, but not the right rows. Rank should evaluate what I need, and then I'd like to only select rows > a certain rank.
I've tried the following:
select cid, sum(amt),
rank() over (partition by cmpn order by sum(amt))
from tableA
group by cid
but get this error:
rank() over (partition by cmpn order by sum(amt))
ERROR at line 2:
ORA-00979: not a GROUP BY expression
CMPN is actually the same value for all the rows in this instance, but I added because I couldn't get the query to run even this far without partitioning by something.
I also couldn't use 'where RANK > NNN' - error on that too - invalid column was the error, as though I didn't already know that column didn't exist in my table...
ANY help or ideas at all would be greatly appreciated...I have been struggling with the same thing. As far as I can
tell, the syntax simply is not powerful enough. Teradata and
IBM, for example, allow the user to append a 'Qualify' statement
to the Rank() command. 'Qualify' allows the query writer
to 'qualify' how many rows are to be returned, similarly to the
way you were trying to access a variable called RANK.
I did have some luck using subqueries, but I would much prefer
to do this all in one command. I am hoping that Ratio To Report
may help overcome this problem, since it apparently ties
together multiple analytic statements. -
I created a table using the ranking field and now I need to delete the "dots/buttons" and turn them into text fields, is this possible?
It sounds like what you are trying to do is edit the choices in a likert field to something other than the default radio button. This is not something that you can do in Formscentral at this time.
Andrew -
Hello All,
Below is the sql i am trying to execute and the Dense Rank function is giving same result for all of the rows, could you please help me where i am doing wrong
SELECT
AMT,
DENSE_RANK() OVER (PARTITION BY AMT ORDER BY AMT DESC) AS DENSE_RANK
FROM
SELECT DISTINCT
SUM(NVL(TRUNC(NET_AMT) * NVL(GLOBAL1_EXCHANGE_RATE,1),0))
OVER (PARTITION BY CUSTOMER_BILL_TO_LOC_WID ORDER BY CUSTOMER_BILL_TO_LOC_WID)
AS AMT
FROM
W_SALES_BOOKING_LINE_F
WHERE
SALES_ORDER_NUM IN ('10612426','10612450','10612477','32649203')
AND
X_MONTH_WID=TO_CHAR(SYSDATE-1,'YYYYMMDD')
)--ORDER BY AMT DESC Result Set:
AMT DENSE_RANK
0 1
2,855 1
6,706 1
14,265 1you have "broken" up your resultset (from the inline view) by AMT (PARTITION BY AMT)
and per part, you sort this (one row in each partition, not a whole lot of sorting) ( ORDER BY AMT DESC)
then you assign a ranking based on the sorting action... which yields 1 (DENSE_RANK)
Are you looking for this
SELECT
AMT,
DENSE_RANK() OVER (ORDER BY AMT DESC) AS DENSE_RANK
FROM
SELECT DISTINCT
SUM(NVL(TRUNC(NET_AMT) * NVL(GLOBAL1_EXCHANGE_RATE,1),0))
OVER (PARTITION BY CUSTOMER_BILL_TO_LOC_WID ORDER BY CUSTOMER_BILL_TO_LOC_WID)
AS AMT
FROM
W_SALES_BOOKING_LINE_F
WHERE
SALES_ORDER_NUM IN ('10612426','10612450','10612477','32649203')
AND
X_MONTH_WID=TO_CHAR(SYSDATE-1,'YYYYMMDD')
)--ORDER BY AMT DESC -
How to use oracle rank key word
I am trying to rank my record using oracle key work row_number() but it just gives me an error message.
SELECT g.csecnum "Section Number", e.iplineno "Line Number",ItemRank,
e.eiitem "Item Number", (i.idescrl ||' '|| e.isupdes) "Item Description",
i.iunits "Item Units", SUM (e.iqty) "Quantity",
p.cprojnum "S.P. Number", p.contid, p.contid,
p.prroute "Route Number",DECODE (TRIM (p.prroute), NULL, 'N/A',p.prroute) "Route Number",
INITCAP (p.clocat1 || p.clocat2 || '---' || p.cdescr) "loc",
p.cdescr "Job Description",func_get_unit_name (iunits) "Unit Name",
(SELECT INITCAP (func_get_county_name (ccnty1)) FROM proposal WHERE contid = '&ContractId') "County Name"
FROM ( SELECT g.csecnum "Section Number", e.iplineno "Line Number",
e.eiitem "Item Number", row_number() over (order by e.eiitem asc) as ItemRank,
(i.idescrl ||' '|| e.isupdes) "Item Description",
i.iunits "Item Units", SUM (e.iqty) "Quantity",
p.cprojnum "S.P. Number", p.contid, p.contid,
p.prroute "Route Number",DECODE (TRIM (p.prroute), NULL, 'N/A',p.prroute) "Route Number",
INITCAP (p.clocat1 || p.clocat2 || '---' || p.cdescr) "loc",
p.cdescr "Job Description",func_get_unit_name (iunits) "Unit Name",
(SELECT INITCAP (func_get_county_name (ccnty1)) FROM proposal WHERE contid = '&ContractId') "County Name"
FROM itemlist i, estitem e, estcatg g, propproj x, proposal p
WHERE p.contid = x.contid AND x.pcn = g.pcn AND e.pcn = g.pcn AND e.cn = g.cn AND i.item = e.eiitem
AND i.ispecyr = p.cspecyr AND e.iplineno <> ' ' AND e.eiitem <> '2550601/01000'
AND e.eiitem <> '2565601/00031' AND e.eiitem <> '2565601/00032' AND e.eiitem <> '2565601/00033'
AND e.eiitem <> '2402601/01000' AND p.contid = '&ContractId'
GROUP BY g.csecnum, i.iunits,p.clocat1,p.clocat2,p.contid,p.cdescr, p.cprojnum,i.iunits,p.prroute, e.iplineno,e.eiitem, i.idescrl,e.isupdes
) ItemNumberRankthanks guys for the help. yes, I do not have a where clause in the query that I posted here and I do not need until I convert this query to a procedure since the value for the where clause is passing from the .net page. I tried to clean it up a little bit by getting rid of all the alias and still not working ....
SELECT ItemRank, g.csecnum , e.iplineno , e.eiitem , (i.idescrl ||' '|| e.isupdes) ,
SUM (e.iqty) , p.cprojnum , p.contid, p.prroute ,DECODE (TRIM (p.prroute), NULL, 'N/A',p.prroute) ,
INITCAP (p.clocat1 || p.clocat2 || '---' || p.cdescr) , p.cdescr ,func_get_unit_name (iunits) ,
(SELECT INITCAP (func_get_county_name (ccnty1)) FROM proposal WHERE contid = '&ContractId')
FROM (SELECT row_number() over (order by e.eiitem asc) as ItemRank,g.csecnum , e.iplineno , e.eiitem ,
(i.idescrl ||' '|| e.isupdes) , SUM (e.iqty) , p.cprojnum , p.contid,
p.prroute ,DECODE (TRIM (p.prroute), NULL, 'N/A',p.prroute),
INITCAP (p.clocat1 || p.clocat2 || '---' || p.cdescr) ,
p.cdescr ,func_get_unit_name (iunits) ,
(SELECT INITCAP (func_get_county_name (ccnty1)) FROM proposal WHERE contid = '&ContractId')
FROM itemlist i, estitem e, estcatg g, propproj x, proposal p
WHERE p.contid = x.contid AND x.pcn = g.pcn AND e.pcn = g.pcn AND e.cn = g.cn AND i.item = e.eiitem
AND i.ispecyr = p.cspecyr AND e.iplineno <> ' ' AND e.eiitem <> '2550601/01000'
AND e.eiitem <> '2565601/00031' AND e.eiitem <> '2565601/00032' AND e.eiitem <> '2565601/00033'
AND e.eiitem <> '2402601/01000' AND p.contid = '&ContractId'
GROUP BY g.csecnum, i.iunits,p.clocat1,p.clocat2,p.contid,p.cdescr, p.cprojnum,i.iunits,p.prroute, e.iplineno,e.eiitem, i.idescrl,e.isupdes
) ItemNumberRank -
Using Dense/Sparse Lookup on Tables or files from different Databases
Hi,
I have a Subject Area which is built on Essbase cube. I have a requirment where I have to use a Lookup on Flat file and/or Database Table.
I followed below steps
1. Created a Logical Column in BMM Layer for a cube dimension
2. Opened the LTS Properties --> Column Mapping and gave below formula
Lookup(SPARSE "Function1"."E:\502125500".""."Function2.txt"."ALIAS", 'NA', "TNWD06613.genpitfi01.og.ge.com"."GOGREP".""."GOGREP"."Gen5,Functions" )
where
Function1"."E:\502125500".""."Function2.txt"."ALIAS" ---> Column from File (Created File DSN and imported in RPD)
"TNWD06613.genpitfi01.og.ge.com"."GOGREP" ---> Essbase Cube
3. Dragged the Column to Presentation for Subject Area on Cube
When I try to create a report on this column I get below error.
Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 16001] ODBC error state: 22005 code: -3030 message: [Microsoft][ODBC Text Driver] Expression too complex. [nQSError: 16015] SQL statement execution failed. (HY000)
SQL Issued: SELECT 0 s_0, "Essbase Test"."Functions"."Alias" s_1, "Essbase Test"."Functions"."Gen5,Functions" s_2, SORTKEY("Essbase Test"."Functions"."Gen5,Functions") s_3 FROM "Essbase Test" FETCH FIRST 65001 ROWS ONLY
Can anybody help me on the same?You can script schemas from all DBs and in case of conflicts you will have to decide what to do.
For example if you have the same SP or UDF on two DBs that does different things, you need to decide what to do with them.
Only if the conflict is tables with the same structure and without KEY constraints and you can also script data and go on.
If you have PK-FK relationships (which I bet is the case) you really need to design your changes based on them and I suspect you will end up scripting instead of putting boxes on SSIS.
It really is a migration job for an experienced DBA and am afraid SSIS can do that much as
Integrate.. not Migrate. -
Dense Rank and Object types (oracle 9i and 10g difference).
Hi all,
One of my queries in my procedure uses scalar subqueries and object types.
The code works fine in 10g but not in 9i. Both Object types and Dense_rank used below are present in both 9i and 10g.
The following is a part of a bigger query.. but this is what it comes down to when I zero in on the error.
-- In both 9i and 10g...
CREATE OR REPLACE TYPE t_audit_type as object(
add_tms date,
add_user_id varchar2(20),
order member function match (t t_audit_type) return integer
Type created.
CREATE OR REPLACE TYPE BODY t_audit_type as
order member function match (t t_audit_type) return integer is
begin
if add_tms < t.add_tms then
return -1;
elsif add_tms > t.add_tms then
return 1;
else
return 0;
end if;
end;
end;
Type body created.
create table t ( x int, y date);
insert into t values(1, sysdate);
insert into t values(1, sysdate+1);
commit;In Oracle 10g..
select min(t_audit_type(x,y))
keep (dense_rank first order by x) result
from t;
RESULT(ADD_TMS, ADD_USER_ID)
T_AUDIT_TYPE('19-JAN-10', 'User2')In Oracle 9i....
9i> select min(t_audit_type(x,y))
2 keep (dense_rank first order by x) result
3 from t;
select min(t_audit_type(x,y))
ERROR at line 1:
ORA-03113: end-of-file on communication channelHave any of you seen this before..? The connection is always being terminated when I run this command.?!Thanks Dom for your reply.
Here is the message I found in the trace file for the error.
ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [0000000100D72F84] [SIGSEGV] [Address not mapped to object] [0x000000018] [] []
Current SQL statement for this session:
select min(t_audit_type(x,y))
keep(dense_rank first order by x)x
from tI will look in metalink and see if this has been addressed before.
Thanks...! -
Hi All,
Can any on let me know how to create a column in OBIEE answers which gives the row number starting with 1 for each row in the group. similarly for next group the row number should start with 1 and so on.
Thanks in advance for your quick response!
RegardsThis feature had appear in the 9i version, so there is no way to have it running with a 6i version. If you have a 9i database, you could write a database stored function/procedure that would use this analytic function, and return the lines to Forms.
Francois -
Analytic Query Dense Rank Criteria
Hello folks,
I haven't had luck to figure out how to solve this problem; need someone to help me with this. I'm guessing this can't be done in a single SQL, has to be a PL / SQL logic;
Say we have an Airline system where we have flights belonging to two airlines, for example United & Continental. If someone wants to make a reservation for 10 seats, the reservation has to split equally between united & continental, in this case 5 seats should go to each airline. lets assume united has 3 flights and continental has 3 flights, and assuming flights with same routes ( unique flight numbers though),
so in this case i would need to pick 5 seats in 3 separate flights for each of United & continental. On the first iteration the diversity should be one seat per flight. So, 3 seats would be reserved on 3 separate flights for united, On the 2nd iteration 2 more seats should be reserved across those 3 flights, the only thing to consider is the seat should be on a different row from the one already selected. When reserving for continental, it has to follow the same logic as applied to united. Seat numbers selected should exactly be the same between the flights from Continental & United, we need to loop until we find a matching available seat number between the flights, If we cannot find common seat number between those flights I should error out saying request cannot be fulfilled.
Let's picture this with some test data, hopefully that makes it more clear :
AIRLINES Table:
ID
AIRLINES
1
UNITED
2
CONTINENTAL
FLIGHTS Table:
ID
ORIGIN
DESTINATION
AIRLINES
FLIGHT#
1
NYC
BOS
UNITED
100
2
CHI
LA
UNITED
101
3
DEN
ATL
UNITED
102
4
NYC
BOS
CONTINENTAL
103
5
CHI
LA
CONTINENTAL
104
6
DEN
ATL
CONTINENTAL
105
INVENTORY Table:
ID
FLIGHT#
SEAT_ROW
SEAT#
AVAILABILITY
1
100
1
A
N
2
100
1
B
Y
3
100
2
A
Y
4
100
2
B
Y
5
101
1
A
Y
6
101
1
B
N
7
101
2
A
N
8
101
2
B
Y
9
102
1
A
Y
10
102
1
B
Y
11
102
2
A
Y
12
102
2
B
Y
13
103
1
A
Y
14
103
1
B
N
15
103
2
A
N
16
103
2
B
Y
17
104
1
A
Y
18
104
1
B
Y
19
104
2
A
Y
20
104
2
B
Y
21
105
1
A
N
22
105
1
B
Y
23
105
2
A
Y
24
105
2
B
Y
With the sample data I have above, if there is a request for 10 seats,
5 seats will need to be booked over United on flights 100, 101 & 102.
5 seats will need to be booked over Continental on flights 103, 104 & 105.
On Iteration 1 >> Only 3 seats are reserved
(a) When looking for a seat availability on flight 100 (united), corresponding search needs to be done on flight 103(continental) to try and find exact seat number available on both the flights, Only Seat row 2 and Seat B satisfies this request , so the return set should be IDs ( 4, 16) from the Inventory Table.
(b) Similarly, When looking for a seat availability on flight 101 (united), corresponding search needs to be done on flight 104(continental) to try and find exact seat number available on both the flights, the return set could be IDs ( 5, 17) or ( 8, 20 ) from the Inventory Table.
(c) Similarly, When looking for a seat availability on flight 102 (united), corresponding search needs to be done on flight 105(continental) to try and find exact seat number available on both the flights, the return set could be IDs ( 10, 22) or ( 11, 23 ) or (12, 24) from the Inventory Table.
On Iteration 2 >> 2 more seats are reserved
(a) flights 100 & 103 have no more seats common seats left that satisfy our conditions.
(b) if (5, 17) were selected in the prior iteration, then (8, 20) should be the return set from Inventory table as they satisfy the condition the seats belong to two different rows.
(c) if (10, 22) or (11, 23) were selected in the prior iteration, then (12, 24) should be the return set from the Inventory table as they satisfy the condition the seats belong to two different rows.
I would like to perform this uniform distribution in Sql or Pl/ Sql and extract the return set as part of automation. I hope the requirement here is clear enough. btw, we are using Oracle 11G R2. Let me know if you have questions,
Thanks in advance,
ChanduSorry for the late reply, I haven't really got a chance to test your SQL query. When I tried this morning it almost worked except for the 3rd diversity rule. I was trying to tweak your code to make it work but I hadn't had any luck. Appreciate if you could help me again
In earlier case I framed my example using Airline system, Diversity rules are still the Same. For convenient purposes I replaced with real test data.
Diversity Rules:
No.of Ports Requested := N ( which means N/ 2 should be fulfilled in each Switch & its corresponding Switch Partner within a Fabric/Partner);
Note: Odd no. requests will be rejected, system will only allow even numbered requests
Rule 1 - (a) Split request evenly between available Switches (per Fabric)
IF (a) doesn't fully complete my request THEN
Rule 2 - (b) Port assignment on the same Switch should happen on a different Line_NO from what has been assigned in (a)
IF (b) did not fully complete my request THEN
Rule 3 -(c) If on the initial iteration one port from each line_No is consumed from a switch , Port assignment can repeat on the already assigned Line_No but the port should belong to different Port_group from what was initially assigned.
All the above diversity rules should take into consideration that port assignments should exactly match between Switch-Pairs (Origin - Destination) belonging to two different Fabrics ( Fabric & its Partner)
Here's some test data:
WITH PORTS_AVAIL
AS
(SELECT 'dev340h104f01' ORIGIN,'dev340h104f02' DESTINATION,'340_Fabric1' FABRIC,'340_Fabric2' FABRIC_PARTNER,'1' LINE_NO,'fc1/4' PORT_NAME,'ASIC 0' PORT_GROUP ,'20:04:00:05:1E:36:46:20' PORT_WWN FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/8','ASIC 0','20:08:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/9','ASIC 0','20:09:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/13','ASIC 0','20:0D:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/17','ASIC 1','20:81:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/18','ASIC 1','20:82:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/23','ASIC 1','20:87:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/24','ASIC 1','20:88:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','1','fc1/31','ASIC 1','20:8F:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/4','ASIC 0','20:14:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/6','ASIC 0','20:16:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/7','ASIC 0','20:17:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/11','ASIC 0','20:1B:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/12','ASIC 0','20:1C:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/17','ASIC 1','20:91:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/19','ASIC 1','20:93:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/25','ASIC 1','20:99:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/27','ASIC 1','20:9B:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/31','ASIC 1','20:9F:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/36','ASIC 3','2E:14:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/38','ASIC 3','2E:16:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/39','ASIC 3','2E:17:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/40','ASIC 3','2E:18:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','2','fc2/41','ASIC 3','2E:19:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/5','ASIC 0','20:25:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/8','ASIC 0','20:28:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/9','ASIC 0','20:29:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/10','ASIC 0','20:2A:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/11','ASIC 0','20:2B:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/12','ASIC 0','20:2C:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/13','ASIC 0','20:2D:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/14','ASIC 0','20:2E:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/18','ASIC 1','20:A2:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/23','ASIC 1','20:A7:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/30','ASIC 1','20:AE:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','3','fc3/36','ASIC 3','2E:24:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/4','ASIC 0','20:34:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/6','ASIC 0','20:36:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/8','ASIC 0','20:38:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/13','ASIC 0','20:3D:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/19','ASIC 1','20:B3:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/22','ASIC 1','20:B6:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/27','ASIC 1','20:BB:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/28','ASIC 1','20:BC:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/30','ASIC 1','20:BE:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/33','ASIC 3','2E:31:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','4','fc4/35','ASIC 3','2E:33:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/10','ASIC 0','20:4A:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/12','ASIC 0','20:4C:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/13','ASIC 0','20:4D:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/14','ASIC 0','20:4E:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/15','ASIC 0','20:4F:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/17','ASIC 1','20:C1:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/23','ASIC 1','20:C7:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/24','ASIC 1','20:C8:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/25','ASIC 1','20:C9:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/26','ASIC 1','20:CA:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/27','ASIC 1','20:CB:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/28','ASIC 1','20:CC:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/29','ASIC 1','20:CD:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/30','ASIC 1','20:CE:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/31','ASIC 1','20:CF:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/32','ASIC 3','2E:40:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/36','ASIC 3','2E:44:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/38','ASIC 3','2E:46:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/39','ASIC 3','2E:47:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','7','fc7/42','ASIC 3','2E:4A:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/6','ASIC 0','20:56:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/7','ASIC 0','20:57:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/9','ASIC 0','20:59:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/15','ASIC 0','20:5F:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/18','ASIC 1','20:D2:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/22','ASIC 1','20:D6:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/23','ASIC 1','20:D7:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/25','ASIC 1','20:D9:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/26','ASIC 1','20:DA:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/30','ASIC 1','20:DE:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/34','ASIC 3','2E:52:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/38','ASIC 3','2E:56:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/40','ASIC 3','2E:58:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/41','ASIC 3','2E:59:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/42','ASIC 3','2E:5A:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/43','ASIC 3','2E:5B:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','8','fc8/44','ASIC 3','2E:5C:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','9','fc9/5','ASIC 0','20:65:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','9','fc9/11','ASIC 0','20:6B:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','9','fc9/12','ASIC 0','20:6C:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','9','fc9/24','ASIC 1','20:E8:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','9','fc9/28','ASIC 1','20:EC:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','9','fc9/37','ASIC 3','2E:65:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/6','ASIC 0','20:76:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/11','ASIC 0','20:7B:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/18','ASIC 1','20:F2:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/27','ASIC 1','20:FB:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/37','ASIC 3','2E:75:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/38','ASIC 3','2E:76:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/39','ASIC 3','2E:77:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f01','dev340h104f02','340_Fabric1','340_Fabric2','10','fc10/42','ASIC 3','2E:7A:00:05:1E:36:46:20' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/8','ASIC 0','20:08:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/9','ASIC 0','20:09:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/17','ASIC 1','20:81:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/18','ASIC 1','20:82:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/24','ASIC 1','20:88:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/28','ASIC 1','20:8C:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','1','fc1/31','ASIC 1','20:8F:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/4','ASIC 0','20:14:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/11','ASIC 0','20:1B:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/12','ASIC 0','20:1C:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/17','ASIC 1','20:91:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/18','ASIC 1','20:92:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/19','ASIC 1','20:93:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/23','ASIC 1','20:97:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/25','ASIC 1','20:99:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/26','ASIC 1','20:9A:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/27','ASIC 1','20:9B:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/31','ASIC 1','20:9F:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/36','ASIC 3','2E:14:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/37','ASIC 3','2E:15:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/38','ASIC 3','2E:16:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/39','ASIC 3','2E:17:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/40','ASIC 3','2E:18:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','2','fc2/41','ASIC 3','2E:19:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/5','ASIC 0','20:25:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/8','ASIC 0','20:28:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/9','ASIC 0','20:29:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/10','ASIC 0','20:2A:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/11','ASIC 0','20:2B:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/12','ASIC 0','20:2C:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/13','ASIC 0','20:2D:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/14','ASIC 0','20:2E:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/18','ASIC 1','20:A2:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/30','ASIC 1','20:AE:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','3','fc3/36','ASIC 3','2E:24:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/4','ASIC 0','20:34:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/6','ASIC 0','20:36:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/8','ASIC 0','20:38:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/13','ASIC 0','20:3D:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/19','ASIC 1','20:B3:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/27','ASIC 1','20:BB:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/28','ASIC 1','20:BC:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/30','ASIC 1','20:BE:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/33','ASIC 3','2E:31:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','4','fc4/35','ASIC 3','2E:33:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/10','ASIC 0','20:4A:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/12','ASIC 0','20:4C:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/13','ASIC 0','20:4D:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/14','ASIC 0','20:4E:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/15','ASIC 0','20:4F:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/17','ASIC 1','20:C1:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/22','ASIC 1','20:C6:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/23','ASIC 1','20:C7:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/24','ASIC 1','20:C8:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/25','ASIC 1','20:C9:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/26','ASIC 1','20:CA:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/27','ASIC 1','20:CB:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/28','ASIC 1','20:CC:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/29','ASIC 1','20:CD:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/30','ASIC 1','20:CE:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/31','ASIC 1','20:CF:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/32','ASIC 3','2E:40:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/36','ASIC 3','2E:44:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/38','ASIC 3','2E:46:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/39','ASIC 3','2E:47:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','7','fc7/42','ASIC 3','2E:4A:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/5','ASIC 0','20:55:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/6','ASIC 0','20:56:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/7','ASIC 0','20:57:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/9','ASIC 0','20:59:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/15','ASIC 0','20:5F:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/18','ASIC 1','20:D2:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/25','ASIC 1','20:D9:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/26','ASIC 1','20:DA:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/30','ASIC 1','20:DE:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/34','ASIC 3','2E:52:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/38','ASIC 3','2E:56:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/40','ASIC 3','2E:58:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/41','ASIC 3','2E:59:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/42','ASIC 3','2E:5A:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/43','ASIC 3','2E:5B:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','8','fc8/44','ASIC 3','2E:5C:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','9','fc9/5','ASIC 0','20:65:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','9','fc9/11','ASIC 0','20:6B:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','9','fc9/24','ASIC 1','20:E8:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','9','fc9/37','ASIC 3','2E:65:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/11','ASIC 0','20:7B:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/18','ASIC 1','20:F2:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/27','ASIC 1','20:FB:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/37','ASIC 3','2E:75:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/38','ASIC 3','2E:76:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/39','ASIC 3','2E:77:00:05:1E:36:48:46' FROM DUAL UNION ALL
SELECT 'dev340h104f02','dev340h104f01','340_Fabric2','340_Fabric1','10','fc10/42','ASIC 3','2E:7A:00:05:1E:36:48:46' FROM DUAL
--SELECT * FROM PORTS_AVAIL
BOTH_AVAIL
AS
(SELECT A.ORIGIN,
A.DESTINATION,
TO_NUMBER(LINE_NO) LINE_NO,
PORT_NAME,
A.FABRIC ORG_FABRIC_NAME,
B.FABRIC DEST_FABRIC_NAME,
A.ORIGIN ORG_SWITCH_NAME,
B.ORIGIN DEST_SWITCH_NAME,
A.PORT_WWN ORG_PORT_WWN,
B.PORT_WWN DEST_PORT_WWN,
A.PORT_GROUP ORG_PORT_GROUP,
B.PORT_GROUP DEST_PORT_GROUP,
DENSE_RANK ()
OVER (PARTITION BY A.ORIGIN ORDER BY TO_NUMBER(LINE_NO))
DR_LINE_NO,
ROW_NUMBER ()
OVER (
PARTITION BY A.ORIGIN, TO_NUMBER(LINE_NO)
ORDER BY
TRIM (
TO_CHAR (REGEXP_SUBSTR (PORT_NAME, '[0-9]{1,3}'),
'000'))
|| TRIM (
TO_CHAR (
LTRIM (
REGEXP_SUBSTR (PORT_NAME,
'(\/)[[:digit:]]{0,3}'),
'000')))
RN_PORTNAME,
DENSE_RANK ()
OVER (PARTITION BY A.ORIGIN ORDER BY A.PORT_GROUP)
DR_PORT_GROUP
FROM PORTS_AVAIL A JOIN PORTS_AVAIL B USING (LINE_NO, PORT_NAME)
WHERE 1 = 1
AND A.DESTINATION = B.ORIGIN
AND A.FABRIC < B.FABRIC
--SELECT * FROM BOTH_AVAIL A
BUY_ORDER
AS (
SELECT A.*,
COUNT (*)
OVER (ORDER BY
RN_PORTNAME,
DR_LINE_NO,
DR_PORT_GROUP,
ORG_SWITCH_NAME)
buy_rn,
COUNT (*) OVER () max_possible
FROM both_avail A
WHERE (DR_LINE_NO = 1 OR DR_PORT_GROUP = 1)
SELECT
LINE_NO "BLADE",
PORT_NAME,
ORG_FABRIC_NAME,
ORG_SWITCH_NAME,
ORG_PORT_WWN,
DEST_FABRIC_NAME,
DEST_SWITCH_NAME,
DEST_PORT_WWN,
ORG_PORT_GROUP,
DEST_PORT_GROUP
FROM buy_order
WHERE :seat_req / 2 BETWEEN buy_rn AND max_possible
AND TRUNC (:seat_req / 2) = :seat_req / 2;
A total of 33 ports (per switch) can be assigned; What does the below condition do ? If I don't apply this condition I get more record set. If you could explain me the Rank_over part that would be great.
WHERE (DR_LINE_NO = 1 OR DR_PORT_GROUP = 1)
When I run the above SQL for a request for 20 Ports, the first 8 records satisfy my diversity rules
(1) Only 1 switch-Pair combination exists ( dev340h104f01<=> dev340h104f02 ), not much there to diversify.
(2) Port assignment is distributed among the unique Line_No's for the only available Switch-Pair. Each of the first 8 ports belong to unique Line_No.
(3) Port assignment on the same line_no can happen but should belong to a different Port Group. Records (9) & (10) (highlighted in RED below) should have come from different Port_Groups ( Asic 1/2/3 not Asic 0). In this case next port (9th record) that can be made available was on Line_No 1 with port as fc1/17 which is Asic 1 & 10th record should be fc2/17 which belongs to Asic 1.
Below is the output when I run the original sql.
Blade
Port_Name
ORG_FABRIC_NAME
ORG_SWITCH_NAME
ORG_PORT_WWN
DEST_FABRIC_NAME
DEST_SWITCH_NAME
DEST_PORT_WWN
ORG_PORT_GRP
DEST_PORT_GRP
1
fc1/8
340_Fabric1
dev340h104f01
20:08:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:08:00:05:1E:36:48:46
ASIC 0
ASIC 0
2
fc2/4
340_Fabric1
dev340h104f01
20:14:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:14:00:05:1E:36:48:46
ASIC 0
ASIC 0
3
fc3/5
340_Fabric1
dev340h104f01
20:25:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:25:00:05:1E:36:48:46
ASIC 0
ASIC 0
4
fc4/4
340_Fabric1
dev340h104f01
20:34:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:34:00:05:1E:36:48:46
ASIC 0
ASIC 0
7
fc7/10
340_Fabric1
dev340h104f01
20:4A:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:4A:00:05:1E:36:48:46
ASIC 0
ASIC 0
8
fc8/6
340_Fabric1
dev340h104f01
20:56:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:56:00:05:1E:36:48:46
ASIC 0
ASIC 0
9
fc9/5
340_Fabric1
dev340h104f01
20:65:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:65:00:05:1E:36:48:46
ASIC 0
ASIC 0
10
fc10/11
340_Fabric1
dev340h104f01
20:7B:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:7B:00:05:1E:36:48:46
ASIC 0
ASIC 0
1
fc1/9
340_Fabric1
dev340h104f01
20:09:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:09:00:05:1E:36:48:46
ASIC 0
ASIC 0
2
fc2/11
340_Fabric1
dev340h104f01
20:1B:00:05:1E:36:46:20
340_Fabric2
dev340h104f02
20:1B:00:05:1E:36:48:46
ASIC 0
ASIC 0 -
How to use RANK function ?
Hello everyone,
here is the query I run in sql developer using RANKFunction.
SELECT Empno, Ename, Job, Mgr, Hiredate, Sal
FROM
(SELECT Empno, Ename, Job, Mgr, Hiredate, Sal,
*RANK*() OVER
(ORDER BY SAL Desc NULLS LAST) AS Emp_Rank
FROM Emp
ORDER BY SAL Desc NULLS LAST)
WHERE Emp_Rank < 6;How I can use this query in my report in obiee or is there any replacement of RANK() function in obiee so that I can use that to get my same above result.
ThanksKuldip wrote:
Thanks, you are absolutely correct. However, By doing this I am getting my output as whic I was not expecting.
Students Marks Rank
student1 95 1
student2 95 1
student3 93 3
student4 93 3
student5 91 5
The output should be as instead
Students Marks Rank
student1 95 1
student2 95 1
student3 93 2
student4 93 2
student5 91 3
Can It be done like this ?
Thanks.
Edited by: Kuldip on Mar 15, 2012 11:51 PMHi Boss,
I think you copied the above scenario from this site..
http://oracle-bi.siebelunleashed.com/articles/rank-and-dense-rank-functionsobiee/
Then why asking how to do this? Are you testing us? Doesn't that site say how to achieve this? -
Top 'n' using rank () function
Hi...
I'm using BO XI 3.0. In my report I need a user to enter TOP 'n' (n=5,10,20,50,100).
For example:
Caller No No of Calls
23467891 10
67698089 35
22377868 17
76378467 10
76374678 20
89978978 6
87786777 11
I already create dimension object for Caller No and measure object for No of Calls in universe.
So I use a rank filter in edit query but it doesn't work.
I also create another measure object in universe name =ranking
rank(No_of_Calls) over(partition by (Caller No) order by (No_of_Calls)).. but it's not work...
So can anybody help me....thanksHi,
Following information might be helpful in resolving the issue.
General Syntax of Ranking :
Rank( measure; (dimensions); [Top|Bottom])
Here is the work flow with an example :- (use efashion universe )
1) Create a webi report selecting objects quarter, year, sales revenue and create a cross tab
2) While creating a cross tab, use the Object Year in columns and object Quarter for rows.
3)Define a variable Var1 = Rank ([Sales Revenue] ; [Quarter]; [Year]) ForEach ([Year])
4) Insert a blank column next to year in the cross tab.
5) Drag and drop the variable Var1 in the new blank column inserted next to Object Year..
You will now find that you have ranking for the years 2001, 2002, 2003 being reflected
independently.
Regards,
Sarbhjeet Kaur -
Possible to use ranking value in formula?
Hi!
User wants to compare previous month to current month ranking number to trend the change. Setup is 2 key fig with sales current month and sales previous month where row is sales office. Then calculate single value as rank. Now, I want to use the ranking value in a formula to compare this months rank vs previous months ranking, but it seems not to work as the formula takes the sales value and not the displayed ranking value. Is there a way to do this in bex or is the only way transformation..?
Regards
HenningYou could create a key figure that always displays a fixed value example 1.
You then restrict this individual key figure to payment method C.
The key figure is now only 1 for payment method C.
In your calculation you now say: if key figure = 1 then ... else ...
If statements are not directly possible, you can only do if statemements indirectly by a similar formula:
(key figure = 1) * value
if key figure is one -> result of (key figure = 1) is 1
1 multiplied by value = value
if key figure is not one -> result of (key figure = 1) is 0
0 multiplied by value = 0
You now have an indirect if clause.
Please assign points if this solved your problem,
Best Regards,
Filip -
How to use rank inside SQL results of a dashboard prompt
I am trying to find last updated date of fact table, last updated date of fact table - 7, last updated date of fact table -21 etc. to be populated in a dashboard prompt and for which I thought i could use Oracle rank() over last_updated_date using a sql synatx like this.
select Periods."Current Week Date" from(SELECT Periods."Current Week Date", RANK(Periods."Current Week Date" BY Periods."Current Week Date") ra FROM "Summit 08" where "Current Week Facts By Product"."Current Week Gross Sales" > 0 order by Periods."Current Week Date" desc) where ra = 1 or ra=7 or ra =21
Error that comes up says
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 27001] End of input has been reached. Illegal syntax. (HY000)
SQL Issued: select Periods."Current Week Date" from(SELECT Periods."Current Week Date", RANK(Periods."Current Week Date" BY Periods."Current Week Date") ra FROM "Summit 08" where "Current Week Facts By Product"."Current Week Gross Sales" > 0 order by Periods."Current Week Date" desc)
This does not work.. any one with suggestions
As always, appreciate your help and thanks in advance
Message was edited by:
user566193Hi...
No dual will not work.. here..
try this.. if you want to show only the national, region and city strings..
*select case when 1=0 then any varchar hold column from your subject area else 'National' end from SubjectAreaName*
union all
*select case when 1=0 then any varchar hold column from your subject area else 'Region' end from SubjectAreaName*
union all
*select case when 1=0 then any varchar hold column from your subject area else 'City' end from SubjectAreaName*
here any varchar hold column from your subject area is any column from existing subject area.. which holds character values.. like.. Markets. Region
I think you know where it need to be written.. in Show SQL part of your prompt..
All the best..
Edited by: Kishore Guggilla on Feb 12, 2009 8:30 PM
Maybe you are looking for
-
Creation of project definition and wbs element
I want creation of project definition and wbs element upto 4 level using bapis. i am using transaction cj27,cj01,cj02 which function module to use for this??
-
Invoicing Plan - Down payment issue
Hi I urgently require help on Invoicing plan, I have created an partial invoicing plan with downpayment (Billing Rule 4 ) I want system to consider this downpayment date and release the payment automatically on the due date. As of now I am unable to
-
How do I add a time stamp to video clips using the date and time the video was taken?
-
Issue with Crystal Report Server
Hi, I have a .Net application that uses Crystal Reports Server. The application runs from two servers through load balancing and one of them hosts RAS(Report Application Server) component as well. The issue I am facing is that the server that does no
-
World music & orchestra plug ins keep disappearing and reappearing
I'd be grateful if anyone can explain how to keep the plug ins like orchestral and world instruments in my library permanently as sometimes when I select an instrument, the plug ins disappear from the list and I don't know how to access them until th