sql把每列的值放到新的列中
可以使用UNPIVOT操作来将每列的值转化为新的列。UNPIVOT操作会将指定的列转换为多行,其中每行都包含原始行的列名和值。然后,可以使用SELECT语句来选择这些行,并将列名和值分别放入新的列中。
下面是一个示例,假设有一个表格包含以下列:
| Name | Age | Height | Weight | |--------|-------|----------|----------| | John | 25 | 180.5 | 75.2 | | Mary | 30 | 170.3 | 63.8 | | Jack | 28 | 185.2 | 82.4 |
现在想要将这些列转换为以下格式:
| Name | Attribute | Value | |--------|-------------|---------| | John | Age | 25 | | John | Height | 180.5 | | John | Weight | 75.2 | | Mary | Age | 30 | | Mary | Height | 170.3 | | Mary | Weight | 63.8 | | Jack | Age | 28 | | Jack | Height | 185.2 | | Jack | Weight | 82.4 |
可以使用以下SQL语句来实现:
SELECT Name, Attribute, Value FROM (SELECT Name, Age, Height, Weight FROM table_name) t UNPIVOT (Value FOR Attribute IN (Age, Height, Weight)) u;
其中,UNPIVOT操作的语法为:
UNPIVOT (column_name FOR attribute_name IN (column1, column2, column3, ...)) table_alias;
其中,column_name是需要转换为新列的列名,attribute_name是新列的名称,IN子句中的列是需要转换的原始列。在本例中,列名为Age、Height和Weight需要被转换为新的列,它们被包含在IN子句中
原文地址: https://www.cveoy.top/t/topic/fdD7 著作权归作者所有。请勿转载和采集!