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

SQL Query pro generování matice, jako je výstupní dotazování související tabulky v SQL Server

Můžete použít PIVOT SQL Serveru operátor

SELECT *FROM ( SELECT P.ProductName , C.CustName , T.Amount FROM Transactions AS T INNER JOIN Product AS P ON T.ProductID =P.ProductID INNER JOIN Customer AS C ON T.CustomerID =C .CustomerID WHERE T.TranDate BETWEEN '2011-01-01' AND '2011-03-31' ) SPIVOT (SUM (Částka) PRO ProductName IN ([Auto], [Cycle], [Scooter])) pvt 

Testovací data

;WITH q AS ( SELECT [Produkt] ='Auto', [Zákazník] ='Armstrong', [Částka] =80115,50 UNION ALL SELECT 'Auto', 'Michelle', 36571.85 UNION ALL SELECT 'Auto ', 'Schmidt', 45000,65 UNION ALL SELECT 'Cyklus', 'Michelle', 15000,00 UNION ALL SELECT 'Cyklus', 'Ronald', 25000,00 UNION ALL SELECT 'Skútr' UNISo 52 SELECT 'Scooter', 'ALLPeter', ALLPeter 'Ronald', 98547.52 UNION ALL SELECT 'Scooter', 'Schmidt', 54000.25 )SELECT Customer , Auto =ISNULL(Auto, 0) , Cycle =ISNULL(Cyklus, 0) , Scooter =ISNULL(Scooter, Total =ISNULL(Auto, 0) + ISNULL(Cyklus, 0) + ISNULL(Skútr, 0)OD ( SELECT * FROM q ) SPIVOT (SOUČET (Částka) PRO produkt V ([Auto], [Cyklus], [Skútr])) pvt 

Výstup

skútr zákaznických automobilů TotalArmstrong 80115,50 0,00 0,00 80115,50 Michelle 36571,85 15000,00 0,00 51571,85peterson 0,00 0,00 82658,23 82658,23ronald 0,00 25000,00 98547.52SchMIDT 45050505000 540,23505000 54050505000 540505.52.52.5209050.

  1. Standardy pro přidání data/času?

  2. Jak exportovat databáze pomocí příkazového řádku?

  3. Mapovat vlastní výsledek dotazu JdbcTemplate v objektu

  4. Kdy použít Common Table Expression (CTE)