2026-03-28 04:47:34
在SQL中,将列数据改为行数据通常被称为“列转行”或“unpivot”操作,可以通过使用UNION或UNION ALL、CASE表达式结合聚合函数(较少用)、以及SQL Server中的UNPIVOT函数等方法实现。
一、使用UNION或UNION ALL
这是最常见且通用的方法,适用于大多数数据库系统。通过将每个列的数据分别选择出来,并使用UNION或UNION ALL将它们合并为一个结果集,每个列的值现在将作为行出现。例如,有一个包含三列(A, B, C)的表,想要将这三列的数据转为行,可以分别选择这三列,并使用UNION ALL将它们合并。
二、使用CASE表达式结合聚合函数
这种方法更常用于行转列的反向操作,但也可以调整用于列转行。通过CASE表达式检查每个列的值,并使用聚合函数(如MAX或SUM)来选择非空值。然而,这种方法相对复杂,且不如UNION或UNPIVOT直观,因此在实际应用中较少使用。
三、使用UNPIVOT函数(SQL Server特有)
在SQL Server中,UNPIVOT函数是专门用于列转行的。它允许你将一个表中的列转换为行,并指定哪些列要转换以及转换后的行数据的格式。使用UNPIVOT函数可以简化列转行的操作,并使结果更加清晰。例如,在SQL Server中,可以使用UNPIVOT函数将包含三列(A, B, C)的表转换为行数据,其中每行的数据包括原始表的某一列的值以及对应的列名。
注意事项: