行数据转为列数据返回 不用pivot() 函数
时间: 2023-05-17 21:03:44 浏览: 46
可以使用 UNPIVOT 函数将行数据转为列数据返回。以下是一个示例代码:
SELECT
ID,
Attribute,
Value
FROM
(SELECT
ID,
Attribute1,
Attribute2,
Attribute3
FROM
MyTable) p
UNPIVOT
(Value FOR Attribute IN
(Attribute1, Attribute2, Attribute3)
) AS unpvt;
相关问题
mysql行数据转为列数据返回
你可以使用 MySQL 的 PIVOT 操作将行数据转换为列数据。以下是一个示例查询:
SELECT
id,
MAX(CASE WHEN attribute = 'attribute1' THEN value END) AS attribute1,
MAX(CASE WHEN attribute = 'attribute2' THEN value END) AS attribute2,
MAX(CASE WHEN attribute = 'attribute3' THEN value END) AS attribute3
FROM
my_table
GROUP BY
id;
这将返回一个结果集,其中每个行表示一个唯一的 ID,每个列表示一个属性。每个单元格包含该 ID 的值和属性的值。
impala将某一行数据转为列
Impala可以使用PIVOT函数将行数据转换为列。假设有以下原始数据表:
```
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 1 | Alice | 80 |
| 2 | Bob | 90 |
| 3 | Charlie | 85 |
+----+---------+-------+
```
要将score列转换为列,可以使用以下查询:
```
SELECT *
FROM (
SELECT name, score
FROM my_table
) t
PIVOT (
AVG(score)
FOR name IN ('Alice', 'Bob', 'Charlie')
) p;
```
这将生成以下结果:
```
+--------+-------+-------+---------+
| Alice | Bob |Charlie| id |
+--------+-------+-------+---------+
| 80 | 90 | 85 | 1 |
| NULL | NULL | NULL | 2 |
| NULL | NULL | NULL | 3 |
+--------+-------+-------+---------+
```
注意,PIVOT函数需要指定列名列表。如果你不知道列名列表,可以使用动态SQL生成列名列表。