I spent more than one day in concatenating the similar rows in SQL.
I am using Squirrel SQL client 3.6 to run the queries. Below is the query i used to get the rows from multiple tables .
select
A.NACCES as NACCES,
(CASE WHEN A.CLNKTYP = 1 THEN 'must' WHEN A..CLNKTYP = 2 THEN 'not' ELSE 'NONEED' END ) as Link,
B.NPART as part
from
HPL.KACCST B, HPL.KAMCLT A, HPL.KCACMT C
where
A.NMOD = '1212'
and C.NMOD = A.NMOD
and C.NSALGNP = '223'
and C.NCUST = ''
and C.NACCES = A.NACCES
and B.NACCES = A.NACCES_LINK
The result is
NACCES Link part
1 must a
1 not b
1 not c
2 must d
2 must e so on...
Now I need to concatenate part column based on NACCES and Link column..
I have seen several posts on this in Stack overflow and I tried FOR XML PATH query , but no luck.
SELECT
P.accessory,
P.Link,
STUFF((SELECT DISTINCT ',' + S.part
FROM (SELECT A.NACCES as NACCES,
(CASE
WHEN A.CLNKTYP = 1 THEN 'must' WHEN A..CLNKTYP = 2 THEN 'not' ELSE 'NONEED'
END) as Link,
B.NPART as part
FROM HPL.KACCST B, HPL.KAMCLT A, HPL.KCACMT C
WHERE A.NMOD = '1212' AND C.NMOD = A.NMOD AND C.NSALGNP = '223'
AND C.NCUST = '' AND C.NACCES = A.NACCES AND B.NACCES = A.NACCES_LINK) AS S
WHERE S.NACCES = P.NACCES
AND S.Link = P.Link
FOR XML PATH('')), 1, 1, '') AS PART
FROM
(SELECT
A.NACCES as NACCES,
(CASE WHEN A.CLNKTYP = 1 THEN 'must' WHEN A..CLNKTYP = 2 THEN 'not' ELSE 'NONEED' END ) as Link,
B.NPART as part
FROM
HPL.KACCST B, HPL.KAMCLT A, HPL.KCACMT C
WHERE
A.NMOD = '1212'
AND C.NMOD = A.NMOD
AND C.NSALGNP = '223'
AND C.NCUST = ''
AND C.NACCES = A.NACCES
AND B.NACCES = A.NACCES_LINK) AS P
GROUP BY
P.NACCES, P.Link
ERROR:
DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601, SQLERRMC=FOR;;( . AT
MICROSECONDS MICROSECOND SECONDS SECOND MINUTES MINUTE, DRIVER=3.53.95
SQLState: 42601ErrorCode: -199
Error: DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=3.53.95
SQLState: 26501
ErrorCode: -514
I tried with GROUP_CONCAT also in Squirrel tool, I am getting GROUP_CONCAT is not available error.
Please make a note that i am using Squirrel to run the queries and I hope this causes FOR XML syntax not to be executed .
I tried with COALESCE , but this also didn't work. Please help me out.