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

Dynamický pivot SQL Server s více sloupci

Podrobnější dynamický SQL dotaz bez použití uložené procedury je následující:

DECLARE @cols AS NVARCHAR(MAX);
DECLARE @pivotSales AS NVARCHAR(MAX);
DECLARE @sql AS NVARCHAR(MAX);

SELECT @cols = ISNULL(@cols + ', ', '') + QUOTENAME(Country)
FROM (SELECT DISTINCT Country FROM tbl1) AS Countries

SET @pivotSales = N'SELECT IssuedOn, ' + @cols +'
FROM (SELECT IssuedOn, Country, Sales FROM tbl1) AS sales
PIVOT(SUM(Sales) FOR Country IN (' + @cols + ')) AS pvt';

SET @sql = ';WITH CTE_SalesPivot AS (
'[email protected]+'
),
CTE_SalesTotal AS (
  SELECT IssuedOn, SUM(Sales) AS [Grand Total]
  FROM tbl1
  GROUP BY IssuedOn
),
CTE_Transactions AS (
  SELECT IssuedOn, SUM(Transactions) AS [Transaction Count]
  FROM tbl1
  GROUP BY IssuedOn
)
SELECT CTE_SalesPivot.IssuedOn, ' + @cols + ', CTE_SalesTotal.[Grand Total], CTE_Transactions.[Transaction Count]
FROM
CTE_SalesPivot
INNER JOIN CTE_SalesTotal ON CTE_SalesPivot.IssuedOn = CTE_SalesTotal.IssuedOn
INNER JOIN CTE_Transactions ON CTE_SalesPivot.IssuedOn = CTE_Transactions.IssuedOn';

EXEC sp_executesql @sql;



  1. poškození injekcí mysql?

  2. Přímé připojení MySql a Delphi

  3. Import souborů do Oracle Apex pomocí wwv_flow_files

  4. Proč je PostgreSQL na Windows tak pomalý?