SQL查询过滤掉第一行和最后一行

时间:2014-01-21 17:11:57

标签: sql sql-server sap

我正在使用SAP数据服务,并有一个我试图过滤的表格。如果我使用可能的SQL查询,那么我在SAP中无法想到的任何东西都可以工作。

我的问题是:如何进行过滤掉表格中第一行和最后一行的查询?

3 个答案:

答案 0 :(得分:0)

SELECT ROW_ID, RECORD_TIMESTAMP, TRANSACTION_NO FROM MyTable
EXCEPT
SELECT TOP(1) ROW_ID, RECORD_TIMESTAMP, TRANSACTION_NO FROM MyTable ORDER BY ROW_ID ASC
EXCEPT
SELECT TOP(1) ROW_ID, RECORD_TIMESTAMP, TRANSACTION_NO FROM MyTable ORDER BY ROW_ID DESC

答案 1 :(得分:0)

select *
from MY_TABLE
where TRANSACTION_NO > (select min(TRANSACTION_NO) from MY_TABLE)
    and TRANSACTION_NO < (select max(TRANSACTION_NO) from MY_TABLE)

您可以为TRANSACTION_NO(ROW_ID等)中的任何一列添加数据,以匹配数据的“first”和“last”。

答案 2 :(得分:0)

select *
from (
   select t.*, 
          row_number() over (order by ROW_ID) as rn, 
          count(*) over () as total_count
   from the_table
) t 
where rn > 1 and rn < total_count;

如果未通过ROW_ID的排序定义“first”和“last”的定义,则需要调整窗口函数order by ROW_ID子句中的over(...)