【问题标题】:Analog of "select level from dual connect by level < 10" for Sybase?Sybase 的“从双重连接中选择级别 < 10 的级别”的模拟?
【发布时间】:2013-05-13 12:59:30
【问题描述】:

通过在Oracle中从双重连接中选择级别,我可以生成整数的子查询并将其转换为另一个序列。

Sybase 可以做到这一点吗?

PS 我想查找表中没有数据的日期(缺失天数)。在 Oracle 中,我这样做:

select to_date('2012-01-01', 'yyyy-mm-dd')+level-1 from dual
    connect by level < to_date('2013-01-01', 'yyyy-mm-dd') - to_date('2012-01-01', 'yyyy-mm-dd')
  MINUS
select distinct date from TBL
    where date between to_date('2012-01-01', 'yyyy-mm-dd')
                   and to_date('2013-01-01', 'yyyy-mm-dd')

在 Sybase 中 MINUS 的模拟是:

select whatever from table1 T1
  where not exists
  ( select 1 from table2 where id = T1.id )

但我不知道按级别连接的模拟...

更新有没有什么方法可以在 Sybase 中创建临时表而不实际将数据存储到磁盘?

【问题讨论】:

    标签: sql oracle date sybase


    【解决方案1】:

    您使用的 Oracle 语法是用作行生成器的分层查询。 Sybase 具有sa_rowgenerator 系统过程,可用于生成一组起始值和结束值之间的整数。

    以下将产生一列介于 1 和 255 之间的整数。

    SELECT row_num FROM sa_rowgenerator( 1, 255 );
    

    【讨论】:

    【解决方案2】:

    sa_rowgenerator 系统过程需要 DBA 权限。没有 DBA 权限的用户必须被授予 EXECUTE 权限才能运行存储过程。

    【讨论】:

      猜你喜欢
      • 2022-10-12
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2012-08-29
      • 2021-01-27
      • 1970-01-01
      • 2012-09-12
      • 2020-08-01
      相关资源
      最近更新 更多