sql >> Database >  >> RDS >> Sqlserver

Dynamische SQL om kolomnamen te genereren?

Nadat we in de loop der jaren veel van deze vragen hebben beantwoord door dynamische pivot-SQL uit de metadata te genereren, kunt u deze voorbeelden bekijken:

SQL Dynamic Pivot - kolommen ordenen

SQL Server 2005 draaien op onbekend aantal kolommen

Welke SQL-query of -weergave "dynamische kolommen" zal tonen

Hoe draai ik op de attributen van een XML-kolom in T-SQL

Hoe het DRY-principe toe te passen op SQL-statements die maanden draaien

In uw specifieke geval (met behulp van de ANSI-spil in plaats van de PIVOT-functie van 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. Een paar kleine problemen met Hekaton-samples

  2. Een belangrijke wijziging in Extended Events in SQL Server 2012

  3. Alfabetisch bestellen in SQL

  4. Een vastgelegde transactie terugdraaien