[英]Converting MSSQL 'FOR XML PATH' To Oracle
I have a Statement to fill a table on my MSSQL Database. 我有一个声明来填写我的MSSQL数据库的表。 It joins some values together seperated by a semicolon.
它将一些值加在一起,用分号分隔。
INSERT INTO XXAArcDocSWSB (ArcDocINr, SWorte)
SELECT A.ArcDocINr, B.SWorte FROM XXAArcDoc A
LEFT JOIN (
SELECT DISTINCT T2.ArcDocINr,
SUBSTRING(
(
SELECT ';' + T1.SWort AS [text()]
FROM (SELECT D.ArcDocINr, SW.SWort FROM XXAArcDoc D, XXAArcSW SW WHERE D.ArcDocINr = SW.ArcDocINr) T1
WHERE T1.ArcDocINr = T2.ArcDocINr
For XML PATH ('')
), 2, 255) [SWorte]
FROM (SELECT D.ArcDocINr, SW.SWort FROM XXAArcDoc D, XXAArcSW SW WHERE D.ArcDocINr = SW.ArcDocINr) T2
) B ON A.ArcDocINr = B.ArcDocINr
I don't have enough Knowledge to convert this to Oracle. 我没有足够的知识将其转换为Oracle。 It should give me the same Output as from MSSQL.
它应该给我与MSSQL相同的输出。 Can someone help me?
有人能帮我吗?
EDIT: 编辑:
Here is some sample data: 以下是一些示例数据:
XXAArcDoc: XXAArcDoc:
ArcDocINr | ...
----------|----------
1 |
2 |
3 |
. |
. |
. |
XXAArcSW: XXAArcSW:
ArcSWINr | ArcDocINr | SWort
---------|-----------|---------
6 | 1 | Müller
7 | 1 | 100
8 | 2 | 111111
9 | 2 | 13579
10 | 2 | 002
11 | 3 | TM-AH
And here is my desired Output: 这是我想要的输出:
ArcDocINr | SWorte
----------|---------
1 | Müller;100
2 | 111111;13579;002
3 | TM-AH
SELECT ArcDocINr,
LISTAGG(
SWort,
';'
) WITHIN GROUP ( ORDER BY ArcSWINr ) AS SWorte
FROM XXAArcSW
GROUP BY ArcDocINr;
Update : 更新 :
If you are inserting into the XXAArcDoc
table using values from the XXAArcSW
table then something like: 如果使用
XXAArcDoc
表中的值插入XXAArcSW
表,则类似于:
INSERT INTO XXAArcDoc ( ArcDocINr, SWorte )
SELECT ArcDocINr,
LISTAGG( SWort, ';' ) WITHIN GROUP ( ORDER BY ArcSWINr )
FROM XXAArcSW
GROUP BY ArcDocINr
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.