Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Dynamisches SQL zum Generieren von Spaltennamen?

Nachdem Sie im Laufe der Jahre viele dieser Fragen beantwortet haben, indem Sie dynamisches Pivot-SQL aus den Metadaten generiert haben, sehen Sie sich diese Beispiele an:

SQL Dynamic Pivot – wie man Spalten anordnet

SQL Server 2005 Pivot bei unbekannter Spaltenanzahl

Welche SQL-Abfrage oder Ansicht zeigt „dynamische Spalten“

Wie schwenke ich auf die Attribute einer XML-Spalte in T-SQL

Wie man das DRY-Prinzip auf SQL-Anweisungen anwendet, die Monate drehen

In Ihrem speziellen Fall (unter Verwendung des ANSI-Pivot anstelle der PIVOT-Funktion von 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)