-4
我需要一个SQL查询/函数,它将找出数位的总和,它出现在偶数位置和数字的总和位于奇数位置。SQL查询来计算奇数和偶数的位数总和
实施例:
如果号码是440065385
:
x=4+0+6+3+5=18(x is holding sum of odd positions)
y=4+0+5+8=17 (y holds the sum of even positions).
感谢。
我需要一个SQL查询/函数,它将找出数位的总和,它出现在偶数位置和数字的总和位于奇数位置。SQL查询来计算奇数和偶数的位数总和
实施例:
如果号码是440065385
:
x=4+0+6+3+5=18(x is holding sum of odd positions)
y=4+0+5+8=17 (y holds the sum of even positions).
感谢。
可以使用水平模仿迭代并连接通过以达到相同的
with iterate as
(select level as i from dual connect by level <=25)
select
table1.column1,
sum(decode(mod(iterate.i,2),0,substr(table1.column1,iterate.i,1))) sum_even,
sum(decode(mod(iterate.i,2),1,substr(table1.column1,iterate.i,1))) sum_old
from table1 ,iterate
where iterate.i <=length(table1.column1)
group by table1.column1
你可以用数字表加入你的表格,将所有数字拆分成若干行,然后分别计算赔率和位置数字。
with positions(position) as
(select level from dual connect by level <=25
),
digits as
(
select
t1.v,
n.position ,
cast(substr(t1.v ,length(t1.v) - n.position + 1, 1) as int) as digit
from my_table t1 left join positions n
on n.position <= length(t1.v)
)
select
v,
sum(case when mod(position,2)=0 then digit else 0 end) as evensum,
sum(case when mod(position,2)=1 then digit else 0 end) as oddsum
from
digits
group by
v
测试Sql Fiddle,结果:
V EVENSUM ODDSUM
440065385 17 18
为什么会有人要编这个使用SQL? : - | – Smutje 2014-12-08 07:56:18
不要将SQL用于没有设计的事情。这只是错误的而不是表现! – 2014-12-08 07:58:31
固定的位数是多少?什么是列的数据类型? – 2014-12-08 07:59:09