行转列sql
时间: 2023-06-29 10:13:09 浏览: 65
如果你想将一行数据转换为列,请使用以下 SQL 语句:
```
SELECT
MAX(CASE WHEN col_name = 'col1' THEN col_value END) AS col1,
MAX(CASE WHEN col_name = 'col2' THEN col_value END) AS col2,
MAX(CASE WHEN col_name = 'col3' THEN col_value END) AS col3
FROM
table_name
WHERE
some_condition;
```
在上面的语句中,`col_name` 是列的名称,`col_value` 是该列的值。通过使用 `CASE` 语句,我们可以将每个列的值转换为单独的列。最后使用 `MAX` 函数来获取每个列的值,并在结果集中返回它们。
请注意,上述语句仅适用于具有固定列名的表。如果您的表中的列名是变量,则需要使用动态 SQL。
相关问题
DB2 行转列SQL
DB2是一种关系型数据库管理系统,它支持使用SQL语言执行各种操作。要将行转列,你可以使用DB2的PIVOT函数或者CASE语句来实现。
如果你使用的是DB2 11版本或更高版本,可以使用PIVOT函数。以下是一个示例:
```
SELECT *
FROM (
SELECT ID, COLUMN_NAME, COLUMN_VALUE
FROM YOUR_TABLE
) AS SRC
PIVOT (
MAX(COLUMN_VALUE)
FOR COLUMN_NAME IN ('Column1', 'Column2', 'Column3')
) AS PVT;
```
在上面的示例中,'YOUR_TABLE'是你要从中获取数据的表名。'COLUMN_NAME'和'COLUMN_VALUE'是你要转换的列名。'Column1', 'Column2', 'Column3'是你要将行转换为列的列名列表。
如果你使用的是DB2 10.5版本或更低版本,可以使用CASE语句来实现行转列。以下是一个示例:
```
SELECT ID,
MAX(CASE WHEN COLUMN_NAME = 'Column1' THEN COLUMN_VALUE ELSE NULL END) AS Column1,
MAX(CASE WHEN COLUMN_NAME = 'Column2' THEN COLUMN_VALUE ELSE NULL END) AS Column2,
MAX(CASE WHEN COLUMN_NAME = 'Column3' THEN COLUMN_VALUE ELSE NULL END) AS Column3
FROM YOUR_TABLE
GROUP BY ID;
```
在上面的示例中,'YOUR_TABLE'是你要从中获取数据的表名。'COLUMN_NAME'和'COLUMN_VALUE'是你要转换的列名。'Column1', 'Column2', 'Column3'是你要将行转换为列的列名列表。
请根据你的DB2版本和具体需求选择适合的方法来实现行转列。
oracle行转列sql
Oracle行转列可以使用`PIVOT`函数来实现。例如,我们有一个表`sales`,包含以下数据:
```
SALESPERSON PRODUCT AMOUNT_SOLD
-----------------------------------
John Phone 1000
John Laptop 2000
Mary Phone 1500
Mary Laptop 2500
```
现在我们想要将`SALESPERSON`列转换为行,并按`PRODUCT`列进行汇总,可以使用以下SQL语句:
```sql
SELECT *
FROM (SELECT salesperson, product, amount_sold
FROM sales)
PIVOT (SUM(amount_sold)
FOR salesperson IN ('John', 'Mary'))
ORDER BY product;
```
执行以上SQL语句后,可以得到以下结果:
```
PRODUCT 'John' 'Mary'
-------------------------
Laptop 2000 2500
Phone 1000 1500
```
其中,`PIVOT`函数用于将`SALESPERSON`列转换成行,并按`PRODUCT`列进行汇总;`SUM(amount_sold)`用于计算每个`PRODUCT`和`SALESPERSON`组合的销售总额。
相关推荐
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)