Author |
Topic |
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-29 : 19:37:35
|
Hi guys, Here is my target table structure...ID,ZIPCODE,ZIPCODE2,ZIPCODE3,ZIPCODE4Here is my source tableID, ZIPCODE1,22342,456781,22341,498001,5699The end result should beID,ZIPCODE,ZIPCODE2,ZIPCODE3,ZIPCODE41,2234,49800,56992,45678,Please help me out how i can accomplish this one in tsql.Please let me know if you want more information.Thank you for your help in advance... |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-10-29 : 19:44:07
|
[code]SELECT ID,MAX(CASE WHEN Seq=1 THEN ZIPCODE END) AS ZIPCODE,MAX(CASE WHEN Seq=2 THEN ZIPCODE END) AS ZIPCODE2,MAX(CASE WHEN Seq=3 THEN ZIPCODE END) AS ZIPCODE3,MAX(CASE WHEN Seq=4 THEN ZIPCODE END) AS ZIPCODE4FROM(SELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS Seq,*FROM TABLE)tGROUP BY ID[/code]------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-29 : 20:47:50
|
Awesome, Thank you for your help... Its work fine. That's what i want!! |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-10-30 : 09:22:01
|
welcome------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-30 : 13:39:25
|
Visakh, just want to know if in feature if requirement comes up like this...ID, ZIPCODE1,22342,456781,22341,498001,56993,987783,987783,98778The end result should beID,ZIPCODE,ZIPCODE2,ZIPCODE3,ZIPCODE41,2234,49800,56992,45678,3,98778,I want only unique Zipcode. |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-10-30 : 13:43:16
|
[code]SELECT ID,MAX(CASE WHEN Seq=1 THEN ZIPCODE END) AS ZIPCODE,MAX(CASE WHEN Seq=2 THEN ZIPCODE END) AS ZIPCODE2,MAX(CASE WHEN Seq=3 THEN ZIPCODE END) AS ZIPCODE3,MAX(CASE WHEN Seq=4 THEN ZIPCODE END) AS ZIPCODE4FROM(SELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS Seq,ROW_NUMBER() OVER (PARTITION BY ID,ZIPCODE ORDER BY ID) AS DupSeqFROM TABLE)tWHERE DupSeq=1GROUP BY ID[/code]------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-30 : 13:48:00
|
That was just a e.g, If i have more columns should i enter hereSELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS Seq,ROW_NUMBER() OVER (PARTITION BY ID,ZIPCODE, ????????????? ORDER BY ID) AS DupSeqFROM TABLE)tWHERE DupSeq=1GROUP BY ID |
 |
|
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-30 : 14:22:37
|
Please forgive me the requirement will change. Same logic however column different/moreID, ZIPCODE,STATE1,2234,NY2,45678,CA2,45678,CA1,2234,NY1,49800,KE1,5699,WA3,98778,VE3,98778,VE3,98778,VEThe end result should beID,ZIPCODE,ZIPCODE2,ZIPCODE3,ZIPCODE4,CITY1,CITY2,CITY31,2234,49800,5699, ,NY,KE,WA2,45678,,,,CA3,98778,,,,VEPlease guide me how i can accomplish this one.... |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-10-30 : 14:33:48
|
same waySELECT ID,MAX(CASE WHEN Seq=1 THEN ZIPCODE END) AS ZIPCODE,MAX(CASE WHEN Seq=2 THEN ZIPCODE END) AS ZIPCODE2,MAX(CASE WHEN Seq=3 THEN ZIPCODE END) AS ZIPCODE3,MAX(CASE WHEN Seq=4 THEN ZIPCODE END) AS ZIPCODE4,MAX(CASE WHEN Seq=1 THEN CITY END) AS CITY1,MAX(CASE WHEN Seq=2 THEN CITY END) AS CITY2,MAX(CASE WHEN Seq=3 THEN CITY END) AS CITY3FROM(SELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS Seq,ROW_NUMBER() OVER (PARTITION BY ID,ZIPCODE,... (all columns that form duplicate group here) ORDER BY ID) AS DupSeqFROM TABLE)tWHERE DupSeq=1GROUP BY ID ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-30 : 14:41:33
|
SELECT ID,lname,fname,gender,MAX(CASE WHEN Seq=1 THEN ZIPCODE1 END) AS ZIPCODE,MAX(CASE WHEN Seq=2 THEN ZIPCODE1 END) AS ZIPCODE2,MAX(CASE WHEN Seq=3 THEN ZIPCODE1 END) AS ZIPCODE3,MAX(CASE WHEN Seq=4 THEN ZIPCODE1 END) AS ZIPCODE4,MAX(CASE WHEN Seq=1 THEN CITY END) AS CITY1,MAX(CASE WHEN Seq=2 THEN CITY END) AS CITY2,MAX(CASE WHEN Seq=3 THEN CITY END) AS CITY3FROM(SELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS Seq,ROW_NUMBER() OVER (PARTITION BY ID,lanme,fname,gender,ZIPCODE1,CITY) ORDER BY ID) AS DupSeqFROM TABLE)tWHERE DupSeq=1GROUP BY ID LANME, FNAME, GENDERNote:- Here is my sample query but i am not getting unique values. Please guide me where i am wrong.Thank You. |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-10-30 : 15:11:52
|
Hhow can i guide without knowing your data?Show some sample data from your table and then explain what output you want out of itb/w above posted query is not syntactically correct as you've extra braces inside partition by------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
tooba
Posting Yak Master
224 Posts |
Posted - 2012-10-30 : 15:18:05
|
Yes that was typo mistake. I understand, its hard to guide. I am following your direction.... I will create a sample data for you...Thank You... |
 |
|
|
|
|