简体   繁体   中英

Merge multiple rows in a single

I need merge multiple rows in a single row with data concatenated on the columns.

This three lines are result is from my query with INNER JOIN

Name  | SC     | Type
----------------------
name1 | 121212 | type1
name2 | 123456 | null
name3 | null   | type1

I want display result like this:

Name  | SC     | Type
----------------------
name1; 121212; type1;
name2; 123456; ;
name3; ;       type1;

It's a single row, each column with data concatenated with ; and a \\n in the end of each data.

The final query need run in SQL Server and Oracle.

I honestly doubt you can use the same query in both oracle and SQL-Server since they both have different functions when it comes to dealing with null values.

For Oracle:

SELECT NVL(Name,'') || ';' as name,
       NVL(SC,'') || ';' as SC,
       NVL(type,'') || ';' as type
FROM (YourQueryHere)

For SQL-Server

SELECT isnull(Name,'') + ';' as name,
       isnull(SC,'') + ';' as SC,
       isnull(type,'') + ';' as type
FROM (YourQueryHere)

Note that as @jarlh said, in concatenating side you can use concat(value,value2) which should work both on SQL-Server and Oracle, depending on your version.

You could simply concatenate the fields:

SELECT  ISNULL(Name,'') + ';' as Name, 
        ISNULL(SC, '') + ';' as SC, 
        ISNULL(Type, '') + ';' as Type
FROM 
(
    -- whatever is your query goes here...
);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM