SQL语句_行转列

表结构示例:

表名:WY_TEST

列:NO      NUMBER(2,0)

        A          VARCHAR2(20)

 

数据:

NO     A

1        作业内容1

2        tool1

3        1

4        作业内容2 

7        作业内容1

8        tool2

9        3

 

规则: 行号除3余1的为作业内容,余2的为工具编号,余3的为次数

要求:生成如下格式

NO      I_WORK               I_TOOL              I_CNT

1          作业内容1            tool1                    1 

2          作业内容2              

3          作业内容3            tool2                    3

 

SQL语句:

SELECT A.NO,MAX(A.I_WORK) I_WORK,MAX(A.I_TOOL) I_TOOL,MAX(A.I_CNT) I_CNT
FROM (
SELECT
CEIL(T.NO/3) NO,
CASE WHEN MOD(T.NO ,3) = 1 THEN T.A ELSE NULL END I_WORK,
CASE WHEN MOD(T.NO ,3) = 2 THEN T.A ELSE NULL END I_TOOL,
CASE WHEN MOD(T.NO ,3) = 0 THEN T.A ELSE NULL END I_CNT
FROM WY_TEST T ) A
GROUP BY A.NO
ORDER BY A.NO

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值