teradata中的rownum等价

teradata中的rownum等价,teradata,rownum,Teradata,Rownum,如何将以下查询(oracle)中的rownum转换为等效的teradata: and not exists(select 1 from CSE, SPD WHERE cse.id=spd.id AND ROWNUM = 1 AND CSE.STATUSID IN(6,7,8,13) 谢谢。Teradata中没有ROWNUM,但您通常可以使用ROW_NUMBER plus QUALIFY重写它 在您的情况下,根本不需要ROWNUM(至少在逻辑上,Oracle可能更喜欢它

如何将以下查询(oracle)中的rownum转换为等效的teradata:

and not exists(select 1
   from CSE, SPD 
   WHERE cse.id=spd.id
   AND ROWNUM = 1
   AND CSE.STATUSID IN(6,7,8,13)

谢谢。

Teradata中没有ROWNUM,但您通常可以使用ROW_NUMBER plus QUALIFY重写它

在您的情况下,根本不需要ROWNUM(至少在逻辑上,Oracle可能更喜欢它来做一个更好的计划),这是完全相同的:

and not exists(select *
   from CSE, SPD 
   WHERE cse.id=spd.id
   AND CSE.STATUSID IN(6,7,8,13)

Teradata中没有ROWNUM,但通常可以使用ROW_NUMBER加上QUALIFY重写它

在您的情况下,根本不需要ROWNUM(至少在逻辑上,Oracle可能更喜欢它来做一个更好的计划),这是完全相同的:

and not exists(select *
   from CSE, SPD 
   WHERE cse.id=spd.id
   AND CSE.STATUSID IN(6,7,8,13)

您可以使用行号。在计算行号时,请记住要考虑的列。您可以使用相同的。
其他选项有稠密等级、等级等。在您的情况下,您可以在子查询中使用等级,并将条件等级设置为1。如果您需要语法,请告诉我。

您可以使用行数。在计算行号时,请记住要考虑的列。您可以使用相同的。
其他选项有稠密等级、等级等。在您的情况下,您可以在子查询中使用等级,并将条件等级设置为1。如果您需要语法,请告诉我。

Teradata没有像Oracle中那样将任何行号附加到表中的行

但它有两个分析函数,如ROW_NUMBER()和RANK(),它们将为您的行提供一个数字,然后您可以相应地选择数据

您可以使用以下内容:

    row_number() over(partition by '' order by statusid asc) as rownum_1
qualify rownum_1 = 1
限定行号()


在这里,可以使用带有一列或几列的分区对数据进行分组,类似于假设表中的某个id列和order by将根据您提供的order by列对表中该id的数据进行排序,并且=1意味着它将为该id选择行号为1的行。

Teradata明确地说,与Oracle中一样,没有任何行号附加到表中的行

但它有两个分析函数,如ROW_NUMBER()和RANK(),它们将为您的行提供一个数字,然后您可以相应地选择数据

您可以使用以下内容:

    row_number() over(partition by '' order by statusid asc) as rownum_1
qualify rownum_1 = 1
限定行号()


在这里,可以使用带有一列或几列的分区来对数据进行分组,例如,假设表中的某个id列和order by将根据您提供的列顺序对表中该id的数据进行排序,并且=1意味着它将为该id选择行,该行的行号为1。

使用如下方法:

    row_number() over(partition by '' order by statusid asc) as rownum_1
qualify rownum_1 = 1

上面的语句模仿了oracle的rownum功能。

使用如下内容:

    row_number() over(partition by '' order by statusid asc) as rownum_1
qualify rownum_1 = 1

上面的语句模仿了oracle的rownum功能。

当您为了提高效率而使用此调整时,我想,QUALIFY ROW_NUMBER()和其他窗口函数在大量使用CPU时不会适合您


您只需删除此部分,Teradata就可以了。

由于您使用此调整来提高效率,我想,限定行数()和其他窗口函数在大量使用CPU时不会适合您


您只需删除这一部分,Teradata就可以了。

语法如下:选择A.colA,AcolB from(sel-colA,colB,qualify-rank()over(partition by-colA,colB order by-ColC)作为表A group by-colA,colB)A中的秩,其中A.rank=1 group by A.colA,b.colB;在给定的内部查询中使用此sql。但相关coly\umn名称代替了上述COL。如果你有问题,一定要让我知道。语法应该是这样的:选择A.colA,AcolB from(sel colA,colB,qualify rank()over(partition by colA,colB order by ColC)作为表A group by colA,colB)A中的秩,其中A.rank=1 group by A.colA,b.colB;在给定的内部查询中使用此sql。但相关coly\umn名称代替了上述COL。如果你有问题,一定要告诉我。