Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我正在对付的帽子。这不是我能控制的桌子。是我公司购买的软件的一部分,因此我转换成了数字。感谢您的回复,我对此表示感谢。@Miguel-理解,但您可以控制结果集中列的名称(或者您不知道吗?),因此您可以选择不将其称为ACCT。更重要的是,这是您需要的,还是其_Sql_Oracle - Fatal编程技术网

Sql 我正在对付的帽子。这不是我能控制的桌子。是我公司购买的软件的一部分,因此我转换成了数字。感谢您的回复,我对此表示感谢。@Miguel-理解,但您可以控制结果集中列的名称(或者您不知道吗?),因此您可以选择不将其称为ACCT。更重要的是,这是您需要的,还是其

Sql 我正在对付的帽子。这不是我能控制的桌子。是我公司购买的软件的一部分,因此我转换成了数字。感谢您的回复,我对此表示感谢。@Miguel-理解,但您可以控制结果集中列的名称(或者您不知道吗?),因此您可以选择不将其称为ACCT。更重要的是,这是您需要的,还是其,sql,oracle,Sql,Oracle,我正在对付的帽子。这不是我能控制的桌子。是我公司购买的软件的一部分,因此我转换成了数字。感谢您的回复,我对此表示感谢。@Miguel-理解,但您可以控制结果集中列的名称(或者您不知道吗?),因此您可以选择不将其称为ACCT。更重要的是,这是您需要的,还是其他什么?我想输入中有两行,2003-2008和2033-2036。您需要从2003年到2008年以及从2033年到2036年的所有数字,还是从2003年到2036年的所有数字?我的解决方案是后者(所有数字)——这就是你需要的吗? CREATE


我正在对付的帽子。这不是我能控制的桌子。是我公司购买的软件的一部分,因此我转换成了数字。感谢您的回复,我对此表示感谢。@Miguel-理解,但您可以控制结果集中列的名称(或者您不知道吗?),因此您可以选择不将其称为ACCT。更重要的是,这是您需要的,还是其他什么?我想输入中有两行,2003-2008和2033-2036。您需要从2003年到2008年以及从2033年到2036年的所有数字,还是从2003年到2036年的所有数字?我的解决方案是后者(所有数字)——这就是你需要的吗?
CREATE TABLE ACCT (ACCT_FROM VARCHAR2(6) , ACCT_TO VARCHAR2(6) ); 
INSERT INTO ACCT VALUES ('2015', '2018');  
INSERT INTO ACCT VALUES ('2019');  
INSERT INTO ACCT (ACCT_FROM) VALUES ('2019');  

"ACCT_FROM" "ACCT_TO"
"2015"  "2018"
"2019"  ""
ACCT
2015
2016
2017
2018
2019
select acct_from  from ACCT where   
acct_from between '2000' and '2999'  
and (ACCT_FROM like '2%' or ACCT_TO like '2%') ; 
SELECT Val 
FROM
(
    SELECT ACCT_FROM AS Val FROM ACCT WHERE ACCT_FROM like '2%' 
    UNION
    SELECT ACCT_TO AS Val FROM ACCT  WHERE ACCT_TO like '2%' 
) T
ORDER BY Val
with rangeOfAccounts(accounts, acct_to) as (
    select to_number(acct_from) as accounts,  to_number(ACCT_TO) as acct_to
    from acct where acct_from like '2%'
    union all
    select accounts + 1, ACCT_TO
    from rangeOfAccounts
    where accounts + 1 <= ACCT_TO
)
select accounts
from rangeOfAccounts
order by accounts
with nrs as ( select rownum  +1999 nr from ( select 1 from dual group by cube (1,2,3,4,5,6,7,8,9,10) ) where rownum <= 1000 )
with nrs as ( select rownum  +1999 nr from ( select 1 from dual group by cube (1,2,3,4,5,6,7,8,9,10) ) where rownum <= 1000 )
select nrs.nr 
from   acct 
,      nrs
where  acct_to is not null
and    nrs.nr between to_number( acct_from ) and to_number( acct_to )
union 
select to_number(acct_from )
from   acct 
where  acct_to is null 
and    to_number(acct_from) between 2000 and 2999
with
     acct ( acct_from, acct_to ) as (
       select '2015', '2018' from dual union all
       select '2019', null   from dual
     ),
     prep ( acct_2xxx ) as (
       select  to_number(acct_from)
         from  acct
         where acct_from like '2%'
       union all
       select  to_number(acct_to)
         from  acct
         where acct_to like '2%'
     ),
     acct_m ( acct_min, acct_max ) as (
       select min(acct_2xxx), max(acct_2xxx)
       from   prep
     )
select to_char(acct_min + level - 1) as acct_all
from   acct_m
connect by level <= acct_max - acct_min + 1
;

ACCT_ALL
----------------
2015
2016
2017
2018
2019

5 rows selected.