Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Odpowiednik funkcji WM_CONCAT w SQL Server

Nie masz równoważnej funkcji do tego, ale nadal możesz symulować (skorzystaj z CROSS APPLY i FOR XML PATH('') ). przykład,

USERID  ADDRESSLINE1
==========================
1       First Street
1       Second Street
2       32th Street
2       24th Street
2       25th Street

da wynik

USERID  ADDRESSLIST
============================
1       First Street, Second Street
2       32th Street, 24th Street, 25th Street

Używając tego zapytania:

SELECT  a.UserID, 
        SUBSTRING(d.Addresses,1, LEN(d.Addresses) - 1) AddressList
FROM
        (
            SELECT DISTINCT UserID
            FROM tableName
        ) a
        CROSS APPLY
        (
            SELECT [AddressLine1] + ', ' 
            FROM tableName AS B 
            WHERE A.UserID = B.UserID 
            FOR XML PATH('')
        ) D (Addresses) 

Demo SQLFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy zakleszczenie może wystąpić przy tej samej metodzie dostępu?

  2. Jak wyeksportować wyniki zapytania do pliku .txt przy użyciu SQLcl (Oracle)

  3. Jak zwrócić RefCursor z funkcji Oracle?

  4. Wstawianie obrazu do BLOB Oracle 10g

  5. Oracle odpowiednik MySQL INSERT IGNORE?