DB2 Query modification to remove duplicate values using LISTAGG function


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
DB2 Query modification to remove duplicate values using LISTAGG function

I am using DB2 v9 and trying to get country values in comma seperated format using below query

Code:
SELECT  distinct LISTAGG(COUNTRIES, ',') WITHIN GROUP(ORDER BY EMPLOYEE)  
FROM LOCATION ;

Output Achieved 
MEXICO,UNITED STATES,INDIA,JAPAN,UNITED KINGDOM,MEXICO,UNITED STATES


The table "LOCATION" has multiple columns apart from Employee and Country and hence i cant group on countries to remove duplicate countries values .
Is there a way to remove dups to get only countries once using above query with modification .

Code:
Expected Output  ( Should exclude MEXICO,UNITED STATES as these two countries are duplicated) 
MEXICO,UNITED STATES,INDIA,JAPAN,UNITED KINGDOM

Any help appreciated.
# 2  
You're mashing together at least two different sets of results grouped by employee, I think. Select employee and country, and you might get something like this:
Code:
1 MEXICO, UNITED STATES, INDIA, JAPAN, UNITED KINGDOM
2 MEXICO, UNITED STATES

If you just want all countries from all employees, just SELECT DISTINCT LISTAGG(COUNTRIES, ',') FROM LOCATION; may do.
# 3  
Hi Corona688 Thank you for quick help on this . However I would need further info on the handling scenarios when we have multiple column in a table .

Code:
 
 SELECT
 Employee_ID 
 LISTAGG(COUNTRIES_OUT, ',') WITHIN GROUP(ORDER BY Employee_ID) AS "COUNTRIES_OUT" 
 FROM 
 LOCATION 
 GROUP BY 
 Employee_ID
 Output 
 
 Employee_ID ,               COUNTRIES_OUT 
 1234                    MEXICO,UNITED STATES, INDIA, JAPAN,UNITED KINGDOM,PHILIPPINES

The above observation is fine as I am using only one column "COUNTRIES_OUT" and grouped against one column "Employee_ID"
Now the challenge is when I add new column to replicate same logic

Code:
 
 SELECT
 Employee_ID 
 LISTAGG(COUNTRIES_OUT, ',') WITHIN GROUP(ORDER BY Employee_ID) AS "COUNTRIES_OUT" ,
 LISTAGG(COUNTRIES_IN, ',') WITHIN GROUP(ORDER BY Employee_ID) AS "COUNTRIES_IN"  ( This is newly added which has only one country ) 
 FROM 
 LOCATION 
 GROUP BY 
 Employee_ID
 Output 
 Employee_ID ,                                                    COUNTRIES_OUT                                                                                                                    COUNTRIES_IN 
 1234                  MEXICO,UNITED STATES, INDIA, JAPAN,UNITED KINGDOM,PHILIPPINES                                              UNITED STATES,UNITED STATES,UNITED STATES,UNITED STATES,UNITED STATES,UNITED STATES

The above output give 6 times UNITED STATES for column COUNTRIES_IN even though it appears once .
Code:
 
 How can I get the output like below 
 
 Employee_ID ,                                                    COUNTRIES_OUT                                                                                                                    COUNTRIES_IN 
 1234                  MEXICO,UNITED STATES, INDIA, JAPAN,UNITED KINGDOM,PHILIPPINES                                                                                     UNITED STATES

Please guide . any help appreciated
# 4  
I don't think you should specify "WITHIN GROUP" more than once, that restriction would end up applying to all columns, put it at the end.
This User Gave Thanks to Corona688 For This Post:
# 5  
Thanks Corona688 . I created a sub query and called separately for those 2 columns and it worked . Thank you for suggestion :-) Cheers
This User Gave Thanks to Perlbaby For This Post:
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #678
Difficulty: Medium
Wi-Fi positioning systems use the positions of local cellular towers to identify the location of a Wi-Fi device.
True or False?

10 More Discussions You Might Find Interesting

1. Programming

DB2 Query to pick hierarchy values

Dear Team I am using DB2 v9 . I have a condition to check roles based on hierarchies like below example. 1.Ramesh has Roles as "Manager" and "Interviewer" 2.KITS has Roles as "Interviewer" 3.ANAND has Roles as "Manager" and "Interviewer" select * FROM TESTING NAME ... (6 Replies)
Discussion started by: Perlbaby
6 Replies

2. Programming

DB2 Query -Convert multi values from column to rows

Hi Team I am using DB2 artisan tool and struck to handle multi values present in columns that are comma(,) separated. I want to convert those column values in separate rows . For example : Column 1 Column2 Jan,Feb Hold,Sell,Buy Expected Result Column1 ... (3 Replies)
Discussion started by: Perlbaby
3 Replies

3. Shell Programming and Scripting

Find duplicate values in specific column and delete all the duplicate values

Dear folks I have a map file of around 54K lines and some of the values in the second column have the same value and I want to find them and delete all of the same values. I looked over duplicate commands but my case is not to keep one of the duplicate values. I want to remove all of the same... (4 Replies)
Discussion started by: sajmar
4 Replies

4. Shell Programming and Scripting

Remove duplicate values in a column(not in the file)

Hi Gurus, I have a file(weblog) as below abc|xyz|123|agentcode=sample code abcdeeess,agentcode=sample code abcdeeess,agentcode=sample code abcdeeess|agentadd=abcd stereet 23343,agentadd=abcd stereet 23343 sss|wwq|999|agentcode=sample1 code wqwdeeess,gentcode=sample1 code... (4 Replies)
Discussion started by: ratheeshjulk
4 Replies

5. Shell Programming and Scripting

Filter file to remove duplicate values in first column

Hello, I have a script that is generating a tab delimited output file. num Name PCA_A1 PCA_A2 PCA_A3 0 compound_00 -3.5054 -1.1207 -2.4372 1 compound_01 -2.2641 0.4287 -1.6120 3 compound_03 -1.3053 1.8495 ... (3 Replies)
Discussion started by: LMHmedchem
3 Replies

6. Shell Programming and Scripting

Implementing Listagg like function in shell

Hi, Basically what I am trying to do is making multiple fields of the same type comma-separated. i.e. for a data like this: B00000 abc B00001 abc,def B00001 ghi B00001 jkl B00002 abc B00002 def B00003 xyz Output should be like: B00000 abc B00001 abc,def,ghi,jkl... (20 Replies)
Discussion started by: prohank
20 Replies

7. Shell Programming and Scripting

Db2 query on other host

Hello, i need some help with a script. I made a script, which connect to different hosts to get some informations. But i got now some problems with getting informations of a database (db2) which is on a other host. I tried something like var=$(rsh HOST su - db2adm -c "db2 connect to database;... (2 Replies)
Discussion started by: Cyver
2 Replies

8. Shell Programming and Scripting

Remove duplicate values with condition

Hi Gents, Please can you help me to get the desired output . In the first column I have some duplicate records, The condition is that all need to reject the duplicate record keeping the last occurrence. But the condition is. If the last occurrence is equal to value 14 or 98 in column 3 and... (2 Replies)
Discussion started by: jiam912
2 Replies

9. Shell Programming and Scripting

awk file to read values from Db2 table replacing hard coded values

Hi, I want to replace a chain of if-else statement in an old AWK file with values from Db2 table or CSV file. The part of code is below... if (start_new_rec=="true"){ exclude_user="false"; user=toupper($6); match(user, "XXXXX."); if (RSTART ==2 ) { ... (9 Replies)
Discussion started by: asandy1234
9 Replies

10. UNIX for Dummies Questions & Answers

[SOLVED] remove lines that have duplicate values in column two

Hi, I've got a file that I'd like to uniquely sort based on column 2 (values in column 2 begin with "comp"). I tried sort -t -nuk2,3 file.txtBut got: sort: multi-character tab `-nuk2,3' "man sort" did not help me out Any pointers? Input: Output: (5 Replies)
Discussion started by: pathunkathunk
5 Replies

Featured Tech Videos