sql >> Databáze >  >> RDS >> Sqlserver

Zřetězit více řádků z více tabulek

Děkuji za podstatu! Mnohem lepší než trhání zubů získat schéma a data. :-) Pokud toto zapojíte do svého hlavního dotazu, měli byste vidět výsledky, které hledáte (no, velmi blízko - viz níže).

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

Výsledek je mírně odlišný, než jste požadovali, ale můžete to opravit použitím formátování řetězce při stahování CommissionPercent.

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


  1. změnit databázi (postgresql) v pythonu dynamicky pomocí psycopg2

  2. Jak mohu použít DATE() v Doctrine 2 DQL?

  3. Jak mohu získat návratovou hodnotu ze systémové zprávy SQL Server?

  4. SQL Server dotaz pro skrytí duplicitních dat sloupců řádků. Nechcete odstraňovat duplicitní řádek