我需要在一行中合并多行,并在列上连接数据。
这三行的结果来自我的查询 INNER JOIN
Name | SC | Type
----------------------
name1 | 121212 | type1
name2 | 123456 | null
name3 | null | type1
我希望显示结果如下:
Name | SC | Type
----------------------
name1; 121212; type1;
name2; 123456; ;
name3; ; type1;
它是一行,每列的数据与;
连接,每个数据末尾有一个\n
。
最终查询需要在SQL Server和Oracle中运行。
答案 0 :(得分:3)
老实说,我怀疑你可以在oracle和SQL-Server中使用相同的查询,因为它们在处理空值时都有不同的功能。
对于Oracle:
SELECT NVL(Name,'') || ';' as name,
NVL(SC,'') || ';' as SC,
NVL(type,'') || ';' as type
FROM (YourQueryHere)
对于SQL-Server
SELECT isnull(Name,'') + ';' as name,
isnull(SC,'') + ';' as SC,
isnull(type,'') + ';' as type
FROM (YourQueryHere)
请注意,正如@jarlh所说,在连接方面,你可以使用concat(value,value2),它应该在SQL-Server和Oracle上都有效,具体取决于你的版本。
答案 1 :(得分:0)
您可以简单地连接字段:
SELECT ISNULL(Name,'') + ';' as Name,
ISNULL(SC, '') + ';' as SC,
ISNULL(Type, '') + ';' as Type
FROM
(
-- whatever is your query goes here...
);