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

Dynamický SQL pro generování názvů sloupců?

Když jste na mnohé z nich v průběhu let odpověděli generováním dynamického pivotu SQL z metadat, podívejte se na tyto příklady:

SQL Dynamic Pivot – jak objednávat sloupce

SQL Server 2005 Pivot na neznámém počtu sloupců

Jaký SQL dotaz nebo zobrazení zobrazí "dynamické sloupce"

Jak mohu provést pivotování atributů sloupce XML v T-SQL

Jak aplikovat princip DRY na příkazy SQL, které se konají po měsících

Ve vašem konkrétním případě (pomocí pivotu ANSI namísto funkce PIVOT SQL Server 2005):

DECLARE @template AS varchar(max)
SET @template = 'SELECT 
SKU1
{COLUMN_LIST}
FROM
OrderDetailDeliveryReview
Group By
OrderShipToID,
DeliveryDate,
SKU1
'

DECLARE @column_list AS varchar(max)
SELECT @column_list = COALESCE(@column_list, ',') + 'SUM(Case When Sku2=' + CONVERT(varchar, Sku2) + ' Then Quantity Else 0 End) As [' + CONVERT(varchar, Sku2) + '],' 
FROM OrderDetailDeliveryReview
GROUP BY Sku2
ORDER BY Sku2

Set @column_list = Left(@column_list,Len(@column_list)-1)

SET @template = REPLACE(@template, '{COLUMN_LIST}', @column_list)

EXEC (@template)


  1. Platné modifikátory pro funkce data/času SQLite

  2. Funkce spánku v ORACLE

  3. TSQL md5 hash se liší od C# .NET md5

  4. Ukládání souborů do SQL databáze pomocí FILESTREAM – část 2