如何在SQL中连接行(I)
我花了一天多的时间连接SQL中类似的行 我正在使用squirrelsqlclient3.6来运行查询。下面是我用来从多个表中获取行的查询如何在SQL中连接行(I),sql,db2,Sql,Db2,我花了一天多的时间连接SQL中类似的行 我正在使用squirrelsqlclient3.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.K
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列连接部分列
我在Stack overflow中看到过几篇关于这个的文章,我尝试了XML路径查询,但没有成功
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
错误:
DB2SQL错误:SQLCODE=-199,SQLSTATE=42601,SQLERRMC=FOR。在
微秒微秒秒分分钟,驱动器=3.53.95
SQLState:42601
错误代码:-199
错误:db2sql错误:SQLCODE=-514,SQLSTATE=26501,SQLERRMC=SQL\u CURLH200C1,DRIVER=3.53.95
SQLState:26501
错误代码:-514
我试过在Squirrel工具中使用GROUP_CONCAT,我得到GROUP_CONCAT不可用错误
请注意,我正在使用Squirrel来运行查询,我希望这会导致不执行XML语法
我尝试了COALESCE,但这也不起作用。请帮帮我。经过大量搜索,我找到了用于在db2中连接列的查询 选择NACCES、LINK、ReplaceCastXmlSerializeContent XMLAGGXMLELEMENTNAME x,S.PART按S.PART排序 作为CLOB1000作为varchar1024,,,,的一部分 从…起 选择accessorym1_u2;.NACCES作为NACCES,如果accessorym1_2;.CLNKTYP=1,则为“必须” 当accessorym1_uux.CLNKTYP=2时,则为“不兼容” ELSE“NONEED”结束为链接,accessory0\u0.NPART作为来自的一部分 HPL.KACCST附件0、HPL.KAMCLT附件1、HPL.KCACMT客户2 其中accessorym1_u0.NMOD='1212'和customerac2_0.NMOD=accessorym1_0.NMOD和customerac2_0.NSALGNP='223',和 customerac2_u0.NCUST=和customerac2_0.NACCES=附件M1_0.NACCES和附件0_0.NACCES=附件M1_0.NACCES\u链接 P
感谢大家的评论。-20多年前,ANSI-92 SQL标准中的老式逗号分隔表样式已被正确的ANSI联接语法所取代,因此不鼓励使用这种样式。我将避免使用那些老式联接。但现在,这不是我关心的。你能帮我把@marc_sDB2有listag:或者listag函数不起作用的行连接起来吗..有人能帮我吗