在SQL Server中,可以使用PIVOT操作將行轉換為列。PIVOT操作可以將唯一值作為列標題,并將行中的值作為新列填充的值。
以下是一些使用PIVOT操作的示例:
SELECT *
FROM (
SELECT column1, column2, column3
FROM table_name
) AS SourceTable
PIVOT (
MAX(column3) -- 選擇一個聚合函數,例如SUM、COUNT、MAX等
FOR column1 -- 列標題所在的列
IN (value1, value2, value3) -- 列標題的唯一值列表
) AS PivotTable;
DECLARE @columnList AS NVARCHAR(MAX);
DECLARE @pivotQuery AS NVARCHAR(MAX);
SELECT @columnList = CONCAT(@columnList, ', ', QUOTENAME(column1))
FROM (
SELECT DISTINCT column1
FROM table_name
) AS ColumnListTable;
SET @pivotQuery = CONCAT('
SELECT *
FROM (
SELECT column1, column2, column3
FROM table_name
) AS SourceTable
PIVOT (
MAX(column3)
FOR column1
IN (', @columnList, ')
) AS PivotTable;
');
EXECUTE sp_executesql @pivotQuery;
以上示例中,table_name
是要轉換的原始表的名稱,column1
是包含列標題的列的名稱,column2
和column3
是要轉換的值的列的名稱。value1, value2, value3
是列標題的唯一值列表。
值得注意的是,PIVOT操作是特定于SQL Server的,不適用于所有數據庫管理系統。如果您使用的是其他數據庫,可能需要使用不同的方法來實現行到列的轉換。