如何使用SQL检索teradata表中的最后插入行

时间:2016-03-30 10:20:24

标签: sql teradata

我有以下multiset teradata表

CREATE MULTISET TABLE pp_scratch.HADOOP_FPTI_DASHBOARD ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT,
     DEFAULT MERGEBLOCKRATIO
     (
      job_status VARCHAR(32) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
      current_processing_hr VARCHAR(32) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
      no_of_files_moved VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL)
PRIMARY INDEX upi_HADOOP_FPTI_DASHBOARD ( current_processing_hr );

当我尝试插入值时,它不是我插入的顺序。如果它已按顺序插入,那么我将使用order by statement检索该值。在这种情况下,如何检索最后插入的值。

示例数据

enter image description here

2 个答案:

答案 0 :(得分:2)

Teradata表是哈希分区/排序的,除非current_processing_hr是唯一的,否则无法获取最后一行

您的数据类型错误:

  • current_processing_hr更改为timestamp(2) default current_timestamp(2),如果您未在同一个1/100秒内插入多行,则可以将其用于最后一行 < / LI>
  • no_of_files_moved更改为INT

答案 1 :(得分:0)

这里你可以做的是添加一个序列(自动增量数字整数)。为此,您必须更改表并添加新列(数据类型整数)。 对于您插入的每个记录,此列将自动将其计数器递增1。现在,如果您按新列排序,您将能够获得插入表中的最后一行。