在SQL数据查询中,如何根据TraceID公共字段来合并其他的几个字段,并以逗号分隔 25

TraceIDBranchIDSystemID4001012311140010222111合并后:TraceIDBranchIDSystemID40010123,2221... TraceID BranchID SystemID
40010 123 111
40010 222 111

合并后:
TraceID BranchID SystemID
40010 123,222 111
展开
 我来答
stand32
2012-01-16 · TA获得超过141个赞
知道答主
回答量:66
采纳率:0%
帮助的人:54万
展开全部
分析函数+递归实现:
SELECT TraceID
,LTRIM(SYS_CONNECT_BY_PATH(BranchID,','),',') AS BranchID
,SystemID
FROM (SELECT TMP.*,
ROW_NUMBER() OVER(PARTITION BY TraceID ORDER BY 1) AS RN
,COUNT(1) OVER(PARTITION BY TraceID) AS CNT
FROM 表名)
WHERE CNT = RN
CONNECT BY PRIOR TraceID = TraceID
AND PRIOR RN + 1 = RN
START WITH RN = 1;
追问
你用的是oracle吧,SQL里根本就没有SYS_CONNECT_BY_PATH()这个函数啊,如果可以的话最好用存储过程!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csuxp2008
2012-01-16 · TA获得超过6485个赞
知道大有可为答主
回答量:4704
采纳率:50%
帮助的人:2465万
展开全部
如果是oracle可以通过简单的函数来实现,ms sql需要写个存储过程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjuszh
2012-01-16 · TA获得超过198个赞
知道答主
回答量:42
采纳率:0%
帮助的人:37.3万
展开全部
这个直接用sql可能不行,建议用存储过程,功能强大
追问
存储过程要怎么写呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
8738451
2012-02-05
知道答主
回答量:11
采纳率:0%
帮助的人:4.1万
展开全部
dfghjkyerdgttrtg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式