当行数大于9时,结果会翻倍

时间:2013-04-09 01:49:54

标签: oracle

我的查询有问题,因为当列总数大于9时,结果会翻倍。我使用的查询是:

SELECT * FROM
(
SELECT 
lol.*
, ROW_NUMBER() OVER (ORDER BY regexp_substr(Wipdatavalue, '^\d+')) AS n
, count(*) OVER() m
FROM
(
SELECT 
wipdatavalue
, containername
, l
, q as qtybox
, d
, qtyperbox AS q
, productname
, dt
, dsn
, CASE
WHEN instr(wipdatavalue, '-') = 0 THEN
to_number(wipdatavalue)
ELSE
to_number(substr(wipdatavalue, 1, instr(wipdatavalue, '-') - 1))
END AS una
, CASE
WHEN instr(wipdatavalue, '-') = 0 THEN
to_number(wipdatavalue)
ELSE
to_number(substr(wipdatavalue, instr(wipdatavalue, '-') + 1))
END AS dulo
FROM trprinting_ls
WHERE containername = :lotID
)lol
START WITH instr(Wipdatavalue, '1') > 0
CONNECT BY LEVEL BETWEEN regexp_substr(Wipdatavalue, '^\d+') AND regexp_substr(Wipdatavalue, '\d+$')
)
WHERE n LIKE :n;

我猜这是因为CONNECT BY LEVEL BETWEEN regexp_substr(Wipdatavalue, '^\d+') AND regexp_substr(Wipdatavalue, '\d+$')可能d只与一个角色有关。那我怎么能纠正这个呢?

0 个答案:

没有答案