我有sql查询结果像这样的数据
Name | City
-------------------
Frank | London
Sebastian | New York
我想将结果合并成这样的单个行和列
Frank;London;Sebastian;New York
如何解决此查询问题?之前谢谢
答案 0 :(得分:0)
默认情况下,SSMS以网格格式打印结果。选项之一是将结果打印为文本。单击菜单上的此按钮或按快捷方式“ CTRL + T”。默认情况下,这将打印制表符分隔的结果,而不是所需的分号分隔的结果。可以从“查询”->“查询选项”->“结果”->“文本”->“输出格式”菜单中进行更改,也可以通过在文本编辑器(如“记事本”)中使用“ CTRL + H”查找并用分号替换所有选项卡。
答案 1 :(得分:0)
在应该执行此工作的SQL Server中:
SELECT ';'+rtrim(Name)+';'+rtrim(City)
FROM Table
FOR XML PATH('')
在oracle中,您没有XML PATH('')语法,但是可以将类似的字段连接起来,例如:
SELECT ';' || WM_CONCAT(name||';'||City) AS Result
FROM table
请注意,在Oracle 12c中不建议使用WM_CONCAT,但是您可以使用ListaAgg
SELECT LISTAGG(Name||City,';') WITHIN GROUP(ORDER BY aColumn DESC) FROM TABLE
欢呼
答案 2 :(得分:0)
您可以:
select stuff ( (select distinct ';'+t1.col2
from table t cross apply
( values (name), (city) ) t1 (col2)
for xml path ('')
), 1, 1, ''
) ;
答案 3 :(得分:0)
这可能是Oracle的一个吗?
WITH tmp AS
(
SELECT 'Frank' Name, 'London' City FROM dual
UNION
SELECT 'Sebastian', 'New York' FROM dual
)
SELECT LISTAGG(name||';'||city, '; ') WITHIN GROUP(ORDER BY null) FROM tmp