Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

GABUNG tiga tabel dan gabungkan data dari beberapa baris untuk setiap baris BERBEDA di kolom terpisah

Dengan asumsi bahwa Anda tidak dapat mengubah struktur data untuk membuat kueri yang lebih efisien, ini akan berhasil:

--Populate sample data
SELECT 1 as key1,       2  as key2 INTO #tbl1
UNION ALL SELECT 1,       5 
UNION ALL SELECT 1,       6 
UNION ALL SELECT 1,       4 
UNION ALL SELECT 1,       8 

SELECT 1  as key1,     'Desc short' as shortkeydesc INTO #tbl2

SELECT 1   as key1,    'Desc a'  as [description] INTO #tbl3
UNION ALL SELECT 1,       'Desc c' 
UNION ALL SELECT 1,       'Desc aa' 
UNION ALL SELECT 1,       'Desc tt' 

--Combine data into semi-colon separated lists
SELECT 
key1
,STUFF(
    (
    SELECT
      ';' + CAST(t2.key2 AS VARCHAR(10))
    FROM #tbl1 t2
    WHERE t2.key1 = tbl1.key1
    FOR XML PATH('')
    ), 1, 1, ''
  )
,STUFF(
    (
    SELECT
      ';' + tbl2.shortkeydesc
    FROM #tbl2 tbl2
    WHERE tbl2.key1 = tbl1.key1
    FOR XML PATH('')
    ), 1, 1, ''
  )
,STUFF(
    (
    SELECT
      ';' + tbl3.[description]
    FROM #tbl3 tbl3
    WHERE tbl3.key1 = tbl1.key1
    FOR XML PATH('')
    ), 1, 1, ''
  )
FROM #tbl1 tbl1
GROUP BY tbl1.key1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Keamanan IIS7, SQL 2008 dan ASP.NET MVC

  2. Jenis Kursor SQL Server - Hanya Meneruskan Kursor Dinamis | Tutorial SQL Server / Tutorial TSQL

  3. SQL Trigger tidak dapat melakukan BUKAN DELETE tetapi diperlukan untuk ntext, kolom gambar

  4. Bagaimana cara GABUNG tabel ketiga dalam pernyataan SQL saya yang mengembalikan COUNT tanpa kehilangan 0 item hitungan?

  5. Mengapa IsNull dua kali lebih lambat dari penggabungan (permintaan yang sama)?