Teradata SQL - 非常大的拉力

时间:2017-11-30 22:55:04

标签: sql teradata

所以我有一个查询返回的行多于MS Excel可以处理的行(200万),有没有人有任何关于让Teradata导出到多个Excel标签的建议,或者可能是一种打破大查询结果的方法,以便我可以运行查询,每次只提取更易管理的块吗?

我知道有一些命令,如 TOP SAMPLE ,它们只会返回一个拉动的给定部分,但我不清楚排序的逻辑是什么一个查询,然后返回,说 TOP 100000 ,然后第二次运行相同/类似的查询,但这次让它返回记录 100001 - 200000 ,并且然后它返回 200001 - 300000 之后的时间,依此类推。

任何提示将不胜感激!我知道我可以导出到文本CSV,但如果我能找到Teradata与Excel一起玩的方法,那肯定会更容易。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用ROW_NUMBER()分配" ID"值到结果集中的每一行,然后以您想要的任何块获取结果。类似的东西:

SELECT col1, col2, ...
FROM MyTable
QUALIFY ROW_NUMBER() OVER(ORDER BY Unique_Col) BETWEEN <Start_Number> AND <End_Number>

只需确保在ORDER BY中使用一列或多列,以便每次运行查询时,ROW_NUMBER函数都应用相同的顺序。

如果在查询运行之间结果集中的行(即添加/删除的行)发生了更改,则不会考虑这一点。如果这是一个问题,请先将行复制到临时表,然后针对临时表运行查询。