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

Gabungkan beberapa baris dari beberapa tabel

Terima kasih untuk intinya! Jauh lebih baik daripada mencabut gigi untuk mendapatkan skema dan data. :-) Jika Anda memasukkan ini ke kueri inti Anda, Anda akan melihat hasil yang Anda cari (well, sangat dekat - lihat di bawah).

DECLARE @SalesRepID INT, @SurgeonID INT, @LocationID INT;
SELECT @SalesRepID = 2, @SurgeonID = 1, @LocationID = 1;

;WITH x AS 
(
  SELECT CommissionPercent, Categories = STUFF((SELECT ', ' 
      + tCat.Category FROM #tCategories AS tCat 
      INNER JOIN #tCommissions AS tCom 
      ON tCat.CategoryID = tCom.CategoryID
      WHERE tCom.CommissionPercent = com.CommissionPercent
      FOR XML PATH, TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') 
 FROM #tCommissions AS com
 WHERE SalesRepID = @SalesRepID
 AND SurgeonID = @SurgeonID
 AND LocationID = @LocationID
),
y AS
(
  SELECT s = RTRIM(CommissionPercent) + ' (' + Categories + ')' 
  FROM x GROUP BY CommissionPercent, Categories
)
SELECT Result = STUFF((SELECT ', ' + s FROM y 
  FOR XML PATH, TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '');

Hasilnya sedikit berbeda dari yang Anda minta, tetapi Anda dapat memperbaikinya dengan menerapkan pemformatan string saat menarik CommissionPercent.

Result
--------------------------------------------------------
0.05 (Shirts, Shoes, Dresses), 0.10 (Hats), 0.15 (Pants)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Saya tidak dapat memulai browser SQL Server

  2. Cara mendapatkan baris karyawan dengan bayaran tertinggi

  3. SQL Server 2016 :Peningkatan Grup Ketersediaan

  4. Penyedia tidak mengembalikan string ProviderManifestToken

  5. Buat Query di SQL Server 2017