sql 列转行
时间: 2023-06-29 22:20:55 浏览: 187
在 SQL 中,将列转换成行的过程称为“行转列”(Pivot)或“透视”(Unpivot)操作。在不同的数据库管理系统中,实现这种操作的语法和方法可能会有所不同。
在 Oracle 中,可以使用 UNPIVOT 操作将列转换为行。例如,以下查询将使用 UNPIVOT 操作将 emp 表中的 job1、job2 和 job3 列转换为行:
```
SELECT empno, job, sal
FROM emp
UNPIVOT (sal FOR job IN (job1, job2, job3));
```
在 SQL Server 中,可以使用 PIVOT 操作将行转换为列。例如,以下查询将 sales 表中的年度销售额按照不同的产品进行透视:
```
SELECT *
FROM sales
PIVOT (SUM(amount) FOR product IN ([Product A], [Product B], [Product C]));
```
这个查询将返回一个表格,其中每一行代表一个年度的销售额,每一列代表一个产品。
相关问题
hive sql 列转行
Hive SQL中的列转行可以通过lateral view explode函数实现。具体步骤如下:
1.创建一个包含需要转换的列的表。
2.使用lateral view explode函数将需要转换的列转换为行。
3.使用select语句选择需要的列。
以下是一个示例代码:
```sql
-- 创建一个包含需要转换的列的表
CREATE TABLE test_table (
id INT,
name ARRAY<STRING>
);
-- 插入数据
INSERT INTO test_table VALUES (1, ARRAY('John', 'Doe')), (2, ARRAY('Jane', 'Doe'));
-- 使用lateral view explode函数将需要转换的列转换为行
SELECT id, name_exploded
FROM test_table
LATERAL VIEW EXPLODE(name) exploded_table AS name_exploded;
-- 选择需要的列
SELECT name_exploded
FROM test_table
LATERAL VIEW EXPLODE(name) exploded_table AS name_exploded;
```
HANA SQL 列转行
以下是HANA SQL中实现列转行的方法:
假设我们有以下表格:
```
ID | Name | Score1 | Score2 | Score3
1 | Tom | 80 | 90 | 85
2 | Jack | 75 | 80 | 92
```
我们想要将Score1、Score2和Score3列转换为行,可以使用UNION ALL操作符来实现:
```sql
SELECT ID, Name, 'Score1' AS ScoreType, Score1 AS Score FROM table_name
UNION ALL
SELECT ID, Name, 'Score2' AS ScoreType, Score2 AS Score FROM table_name
UNION ALL
SELECT ID, Name, 'Score3' AS ScoreType, Score3 AS Score FROM table_name
```
这将返回以下结果:
```
ID | Name | ScoreType | Score
1 | Tom | Score1 | 80
1 | Tom | Score2 | 90
1 | Tom | Score3 | 85
2 | Jack | Score1 | 75
2 | Jack | Score2 | 80
2 | Jack | Score3 | 92
```
阅读全文