Question : Follow Up on previous question

Hi,

  following up on the following question,concerning rows to columns transform,
http://www.experts-exchange.com/Database/DB2/Q_26406936.html
   I could achieve what i wanted.But i have a problem arising here.
When the address is repeating for the same ID, the row_number function is returning 2 for that address and so, when i display as address1 and address2, the values are the same..

 In short, what i want is that the addresses should not repeat even if they are repeating in the rows..
 Same applies to the phone numbers and emails.

How can i do this? Please help.
Attachments:
 
Row to Columns
 

Answer : Follow Up on previous question

Try this:


-Greg
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
With SUB_TABLE as (
SELECT 
	ID, FIRST_NAME, LAST_NAME, 
	MAX(CASE WHEN RN = 1 THEN ADDRESS ELSE NULL END) AS ADDRESS1,
	MAX(CASE WHEN RN = 2 THEN ADDRESS ELSE NULL END) AS ADDRESS2,	
	MAX(CASE WHEN RN = 3 THEN ADDRESS ELSE NULL END) AS ADDRESS3,	
	MAX(CASE WHEN RN = 4 THEN ADDRESS ELSE NULL END) AS ADDRESS4,		
	MAX(CASE WHEN RN = 1 THEN PHONE_NO ELSE NULL END) AS PHONE1,
	MAX(CASE WHEN RN = 2 THEN PHONE_NO ELSE NULL END) AS PHONE2,	
	MAX(CASE WHEN RN = 3 THEN PHONE_NO ELSE NULL END) AS PHONE3,
	MAX(CASE WHEN RN = 4 THEN PHONE_NO ELSE NULL END) AS PHONE4,	
	MAX(CASE WHEN RN = 1 THEN CELL_NO ELSE NULL END) AS CELL1,	
	MAX(CASE WHEN RN = 2 THEN CELL_NO ELSE NULL END) AS CELL2,	
	MAX(CASE WHEN RN = 3 THEN CELL_NO ELSE NULL END) AS CELL3,	
	MAX(CASE WHEN RN = 4 THEN CELL_NO ELSE NULL END) AS CELL4	
FROM 
	(
	SELECT 
		ID, FIRST_NAME, LAST_NAME, ADDRESS, PHONE_NO, CELL_NO, 
		ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ADDRESS DESC,PHONE_NO DESC,CELL_NO DESC) AS RN
	FROM 
		YOUR_TABLE
	) AS T
GROUP BY ID, FIRST_NAME, LAST_NAME
)
Select distinct (*)
from SUB_TABLE
Random Solutions  
 
programming4us programming4us