Đã trả lời rất nhiều câu hỏi này trong nhiều năm bằng cách tạo SQL trục động từ siêu dữ liệu, hãy xem các ví dụ sau:
SQL động Pivot - cách sắp xếp các cột
SQL Server 2005 xoay vòng trên số cột không xác định
Truy vấn hoặc chế độ xem SQL nào sẽ hiển thị "cột động"
Làm cách nào để xoay quanh các thuộc tính của cột XML trong T-SQL
Cách áp dụng nguyên tắc DRY cho các câu lệnh SQL xoay vòng các tháng
Trong trường hợp cụ thể của bạn (sử dụng trục ANSI thay vì tính năng PIVOT của 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)