在Teradata SQL中创建假索引列

在Teradata SQL中创建假索引列,sql,teradata,Sql,Teradata,我有以下声明: SELECT col_a, col_b, col_c from database.table sample 50; 我希望我的输出如下所示: id col_a col_b col_c 1 data goes here 2 data goes here 3 data goes here 4 data goes here 5 data goes here 6 data

我有以下声明:

SELECT col_a, col_b, col_c from database.table sample 50;
我希望我的输出如下所示:

id   col_a   col_b   col_c
1    data    goes    here
2    data    goes    here
3    data    goes    here
4    data    goes    here
5    data    goes    here
6    data    goes    here
基本上-我需要为
id
创建一列,该列从1开始,并自动递增检索到的每一行


如何执行此操作?

您可以使用
行编号()


??
表示列/表达式,该列/表达式给出了
id的顺序

您可以使用
行编号()


??
表示列/表达式,如果您确实希望对采样行进行编号,则该列/表达式给出了
id的顺序:

SELECT ROW_NUMBER() OVER (ORDER BY some_field), 
   dt.*
FROM
 (
   SELECT col_a, col_b, col_c 
   FROM database.table
   SAMPLE 50
 ) AS dt

您也可以使用
TOP
,而不是
SAMPLE
,但这样它就不再是随机的了。

如果您确实希望对采样行进行编号:

SELECT ROW_NUMBER() OVER (ORDER BY some_field), 
   dt.*
FROM
 (
   SELECT col_a, col_b, col_c 
   FROM database.table
   SAMPLE 50
 ) AS dt

您也可以使用
TOP
,而不是
SAMPLE
,但这样它就不再是随机的了。

您想将该序列添加到样本的结果中吗?这应该按任何列排序吗?这只是
sample 50
,因为实际的表有5000000行,我不想把它们全部拉出来。在本例中,由于我们在50条记录处停止,我希望行从1到50。我不一定希望它被任何东西“排序”——第一行应该是1,第二行应该是2,等等。你为什么要对这些行进行编号,没有意义?对我来说有意义?我的意思是-我正在用这些数据做一些其他的事情,我需要为每一行有一个某种类型的id,它需要是数字的,我希望它的顺序是从
1到n
。所以,这里有一个非常具体的含义:)你想把这个序列添加到样本的结果中吗?这应该按任何列排序吗?这只是
sample 50
,因为实际的表有5000000行,我不想把它们全部拉出来。在本例中,由于我们在50条记录处停止,我希望行从1到50。我不一定希望它被任何东西“排序”——第一行应该是1,第二行应该是2,等等。你为什么要对这些行进行编号,没有意义?对我来说有意义?我的意思是-我正在用这些数据做一些其他的事情,我需要为每一行有一个某种类型的id,它需要是数字的,我希望它的顺序是从
1到n
。所以,有一个非常具体的意思:)嗯。。。我可以使用类似于
SELECT ROW\u NUMBER()OVER(ORDER by some\u field ASC)这样的函数作为id
——但我不确定如何从
1
开始,然后转到
n
Hmm。。。我可以使用
选择行号()作为id
,但我不确定如何从
1开始,转到
n
,我明白了-如果我取下
样本
(从我最初的查询中+
行号()作为id(按a2.submitted日期描述排序),
),它更接近于从1开始,但仍然有数字缺失。在我的测试查询中,删除
SAMPLE 500
,Teradata在2000行询问我是否要停止查询,我回答是-
id
列在
2028
结束,但返回
2000
行。知道为什么吗?比如,我有
id
#2014年,但不是2015年、2016年或2017年,而是2018年……@BrianPowell:你运行过我的嵌套查询吗<代码>示例
是在
行编号
之后完成的,这就是为什么您需要一个派生表。是的,这个嵌套查询非常适合
示例
顶部n
语法。非常感谢。我花了一些时间重新格式化我的原始查询:)我明白了-如果我把
示例
(从我的原始查询中+
行号()移到(按a2.submitted\u date DESC排序)作为id,
),它将更接近于从1开始-但仍然有数字丢失。在我的测试查询中,删除
SAMPLE 500
,Teradata在2000行询问我是否要停止查询,我回答是-
id
列在
2028
结束,但返回
2000
行。知道为什么吗?比如,我有
id
#2014年,但不是2015年、2016年或2017年,而是2018年……@BrianPowell:你运行过我的嵌套查询吗<代码>示例
是在
行编号
之后完成的,这就是为什么您需要一个派生表。是的,这个嵌套查询非常适合
示例
顶部n
语法。非常感谢。我花了一些时间重新格式化原始查询:)