Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Свързване на множество редове от множество таблици

Благодаря ти за същината! Толкова по-добре от вадене на зъби за получаване на схема и данни. :-) Ако включите това към основната си заявка, трябва да видите резултатите, които търсите (е, много близки - вижте по-долу).

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, '');

Резултатът е малко по-различен от поискания, но бихте могли да го поправите, като приложите форматиране на низ при изтегляне на 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. Проверете дали дадена таблица се препраща от външен ключ в SQL Server с OBJECTPROPERTY()

  2. Как да изпълним съхранена процедура в друга съхранена процедура в sql сървър

  3. Има ли LastIndexOf в SQL Server?

  4. SQL Server:Обединяване на няколко реда от данни в един ред

  5. Защо заявката за Microsoft SQL Server 2012 отнема минути в сравнение с JDBC 4.0, но секунди в Management Studio?