【发布时间】:2017-12-10 00:17:38
【问题描述】:
我有一个语句来填充我的 MSSQL 数据库中的一个表。它将一些值连接在一起,用分号分隔。
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
我没有足够的知识将其转换为 Oracle。它应该给我与 MSSQL 相同的输出。 有人可以帮我吗?
编辑:
这是一些示例数据:
XXAArcDoc:
ArcDocINr | ...
----------|----------
1 |
2 |
3 |
. |
. |
. |
XXAArcSW:
ArcSWINr | ArcDocINr | SWort
---------|-----------|---------
6 | 1 | Müller
7 | 1 | 100
8 | 2 | 111111
9 | 2 | 13579
10 | 2 | 002
11 | 3 | TM-AH
这是我想要的输出:
ArcDocINr | SWorte
----------|---------
1 | Müller;100
2 | 111111;13579;002
3 | TM-AH
【问题讨论】:
-
你正在寻找 LISTAGG
-
我建议您展示一些示例数据,更重要的是,展示您想要的输出。
-
@jeff6times7 更新了样本数据和所需的输出
标签: sql sql-server oracle code-conversion for-xml-path