db2 sql 通过函数(concat/posstr/locate)实现行转列,列转行
时间: 2023-08-12 21:01:46 浏览: 638
在DB2 SQL中,可以通过使用函数如concat、posstr和locate来实现行转列和列转行。
行转列:
假设有一个表格t,包含以下数据:
```
╔═══════════╗
║ 列名 ║
╠═══════════╣
║ 值1 ║
║ 值2 ║
║ 值3 ║
╚═══════════╝
```
现在我们想要将这个表格的数据进行行转列,可以使用concat函数来实现。例如:
```sql
SELECT CONCAT(t.值1, ',', t.值2, ',', t.值3) AS 列转行结果
FROM t;
```
这将返回一个结果集,其中每个行都会将原来的值连接在一起,以逗号分隔,如下所示:
```
╔════════════════════════╗
║ 列转行结果 ║
╠════════════════════════╣
║ 值1, 值2, 值3 ║
╚════════════════════════╝
```
列转行:
假设有一个表格t,包含以下数据:
```
╔════════════════════════╦════════════════════════╦════════════════════════╗
║ 值1 ║ 值2 ║ 值3 ║
╠════════════════════════╬════════════════════════╬════════════════════════╣
║ A ║ B ║ C ║
╚════════════════════════╩════════════════════════╩════════════════════════╝
```
现在我们想要将这个表格的数据进行列转行,可以使用posstr和locate函数来实现。例如:
```sql
SELECT SUBSTRING(t.值1, LOCATE(',', t.值1) + 1) AS 值
FROM t
WHERE LOCATE(',', t.值1) <> 0
UNION
SELECT t.值2 AS 值
FROM t
UNION
SELECT t.值3 AS 值
FROM t;
```
这将返回一个结果集,其中每个行都包含原来每个列的值,如下所示:
```
╔═════════╗
║ 值 ║
╠═════════╣
║ B ║
║ C ║
║ A ║
╚═════════╝
```
通过使用这些函数,可以很方便地实现行转列和列转行的操作。
阅读全文
相关推荐
















