Oracle 存储过程实现行转列-pivot

昨天同事发来一个select 语句,说想实现行转列,


原语句如下:


通过pivot 进行转换,显示如下:


但是上面有个问题,因为pivot in 子句里面必须要写成固定的值,于是为了实现行转列,下面就采用了存储过程来实现:


最终结果显示如下:


虽然上面的写法很low,但是也是实现了要求,如果有其他好的方法,还请指教!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle ,如果你想将三行同时进行行转列操作,可以使用多次的 PIVOT 操作或者使用自连接(SELF JOIN)来实现。下面是两种方法的示例: 方法一:使用多次的 PIVOT 操作 假设你有一个表格 `your_table`,其包含列 `column1`、`column2`和`column3`。你希望将三行同时进行行转列操作。可以使用以下查询: ```sql SELECT * FROM ( SELECT column1, column2, column3 FROM your_table ) PIVOT ( MAX(column2) AS column2, MAX(column3) AS column3 FOR (column1) IN ('row1' AS row1, 'row2' AS row2, 'row3' AS row3) ); ``` 在上面的示例,我们使用了多次的 PIVOT 操作来将每行的数据转换为列。每个 PIVOT 操作都定义了相应的列名和别名。你可以根据实际需求修改这些列名和别名。 方法二:使用自连接(SELF JOIN) 另一种方法是使用自连接来实现行转列操作。以下是一个示例: ```sql SELECT t1.column1, t1.column2 AS column2_row1, t2.column2 AS column2_row2, t3.column2 AS column2_row3, t1.column3 AS column3_row1, t2.column3 AS column3_row2, t3.column3 AS column3_row3 FROM your_table t1 JOIN your_table t2 ON t1.column1 = t2.column1 JOIN your_table t3 ON t1.column1 = t3.column1 WHERE t1.column1 = 'row1' AND t2.column1 = 'row2' AND t3.column1 = 'row3'; ``` 在上面的示例,我们使用了自连接来将三行数据合并在一起,并通过 WHERE 子句筛选出指定的行。你可以根据实际需求调整 WHERE 子句和选择的列。注意,这种方法需要确保每个行的数据都存在,并且需要进行多个自连接操作,可能会影响查询的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨花石~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值