Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dynamiczny SQL do generowania nazw kolumn?

Odpowiadając na wiele z nich przez lata, generując dynamiczne przestawne SQL z metadanych, spójrz na te przykłady:

SQL Dynamic Pivot - jak uporządkować kolumny

SQL Server 2005 Pivot na nieznanej liczbie kolumn

Jakie zapytanie SQL lub widok pokaże „dynamiczne kolumny”

Jak przestawić na atrybuty kolumny XML w T-SQL

Jak zastosować zasadę DRY do instrukcji SQL, które przestawiają miesiące

W twoim konkretnym przypadku (przy użyciu mechanizmu obrotowego ANSI zamiast funkcji PIVOT w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja CASE w klauzuli WHERE w SQL Server 2008

  2. SQL Server Query - mnożenie grupowe

  3. Korzystanie z programu SQL Server Profiler | Rozwiązywanie problemów z wydajnością serwera SQL -5

  4. Utwórz procedurę składowaną w SQL Server 2017

  5. 5 sposobów na zwracanie wierszy zawierających małe litery w SQL Server