查询优化-在Oracle SQL中重复模式

查询优化-在Oracle SQL中重复模式,sql,oracle,Sql,Oracle,简介:我可以在MS Excel中完成这项工作,这需要1分钟,但我正在尝试在Oracle SQL中实现这一点 这是我的密码: SELECT A.*, (CASE WHEN A.r = 1 then 'X1' when A.r = 2 then 'X2' when A.r = 3 then 'X3' when A.r = 4 then 'X4' when A.r = 5 then 'X2' when A.r = 6 then 'X6' end) X FROM ( Select Rownum

简介:我可以在MS Excel中完成这项工作,这需要1分钟,但我正在尝试在Oracle SQL中实现这一点

这是我的密码:

SELECT A.*, (CASE WHEN A.r = 1 then 'X1' when A.r = 2 then 'X2' when A.r = 3 then 'X3' when A.r = 4 
then 'X4' when A.r = 5 then 'X2' when A.r = 6 then 'X6' end) X FROM
(
    Select Rownum r
    From dual
    Connect By Rownum <= 6 ) A
这是输出:


现在,如果我必须对25000个数字执行此操作,也就是说,当rownum要对其余的行重复6行的模式时,可以执行以下操作:

select t.*, 
       (case when mod(rownum, 6) = 5 then 'X2'
             else 'X' || (mod(rownum - 1, 6) + 1)
        end)
from t;

过些时候我会回复的,我要买些食物。规则是什么?因为你需要将5转换成X2,所以不清楚如何将其推断为25000个项目。如果5转到X5,它可以是简单的串联。请描述将数字转换为X的规则。@GordonLinoff因此规则是获取模式,如果列有值,例如2431,我希望将输出作为X2431。@astentx抱歉,修复了图像,您好@Gordon Linoff,我修改了图像,图像中有错误,我将尝试在不使用case语句的情况下执行此操作。它起作用了