在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
语法。非常感谢。我花了一些时间重新格式化原始查询:)