sql >> Databasteknik >  >> RDS >> Sqlserver

Dynamisk SQL för att generera kolumnnamn?

Efter att ha svarat på många av dessa genom åren genom att generera dynamisk pivot SQL från metadata, ta en titt på dessa exempel:

SQL Dynamic Pivot - hur man beställer kolumner

SQL Server 2005 Pivot på okänt antal kolumner

Vilken SQL-fråga eller vy kommer att visa "dynamiska kolumner"

Hur pivoterar jag på en XML-kolumns attribut i T-SQL

Hur man tillämpar DRY-principen på SQL-satser som svänger månader

I ditt specifika fall (med ANSI-pivoten istället för SQL Server 2005:s PIVOT-funktion):

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. Hur man begränsar rader i en SQL Server-resultatuppsättning

  2. Hur man övervakar PostgreSQL med Nagios

  3. Hur infogar man utf-8 mb4-tecken (emoji i ios5) i mysql?

  4. Ta bort standardspåret – Del 2