我花了一天多的时间来连接SQL中的类似行。
我正在使用Squirrel SQL客户端3.6来运行查询。下面是我用来从多个表中获取行的查询。
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
结果是
NACCES Link part
1 must a
1 not b
1 not c
2 must d
2 must e so on...
现在我需要根据NACCES和Link列连接part列。
我已经在Stack溢出中看到了几个帖子,我尝试了FOR XML PATH查询,但没有运气。
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
错误:
DB2 SQL错误:SQLCODE = -199,SQLSTATE = 42601,SQLERRMC = FOR ;;(。AT
MICROSECONDS MICROSECOND SECONDS第二分钟分钟,驾驶员= 3.53.95
SQLState:42601ErrorCode:-199
错误:DB2 SQL错误:SQLCODE = -514,SQLSTATE = 26501,SQLERRMC = SQL_CURLH200C1,DRIVER = 3.53.95
SQLState:26501
ErrorCode:-514
我在Squirrel工具中尝试使用GROUP_CONCAT,我收到GROUP_CONCAT错误。
请注意我正在使用Squirrel来运行查询,我希望这会导致FOR XML语法无法执行。
我尝试过COALESCE,但这也没有用。请帮帮我。
答案 0 :(得分:0)
经过大量搜索后,我找到了连接db2中列的查询。
选择NACCES,LINK,替换(替换(替换(演员)(由S.PART制作的XMLSERIALIZE(内容XMLAGG)(XMLELEMENT(名称" x",S.PART)) AS CLOB(1000))作为varchar(1024)),'',','),'','' ),'','')作为PART 从 ( 选择accessorym1_.NACCES作为NACCES,(例如,当accessorym1_.CLNKTYP = 1那么'必须' 当accessorym1_.CLNKTYP = 2那么“不兼容”' ELSE' NONEED' END)作为LINK,accessory0_.NPART作为PART来自 HPL.KACCST accessory0_,HPL.KAMCLT accessorym1_,HPL.KCACMT customerac2_ 其中accessorym1_.NMOD =' 1212'和customerac2_.NMOD = accessorym1_.NMOD和customerac2_.NSALGNP =' 223'和 customerac2_.NCUST =''和customerac2_.NACCES = accessorym1_.NACCES和accessory0_.NACCES = accessorym1_.NACCES_LINK )P
谢谢你们的评论。