1

我正在执行以下查询

SELECT QLID, 
       Emp_Date,
       Emp_Time,
       sum(emp_time) over(partition by qlid order by emp_time)
FROM GCC_INTERNAL_OPS.Entry_Time 
where (qlid='fs255015' or qlid='mf255005') 
    and emp_date=date '2013-01-31'

它返回以下结果集

QLID    Emp_Date    Emp_Time    Group Sum(Emp_Time)
FS255015    01/31/2013  1218    5390.00
FS255015    01/31/2013  1523    5390.00
FS255015    01/31/2013  1526    5390.00
FS255015    01/31/2013  1123    5390.00
MF255005    01/31/2013  0932    15033.00
MF255005    01/31/2013  0936    15033.00
MF255005    01/31/2013  1106    15033.00
MF255005    01/31/2013  1332    15033.00
MF255005    01/31/2013  1338    15033.00
MF255005    01/31/2013  1348    15033.00
MF255005    01/31/2013  1509    15033.00
MF255005    01/31/2013  1544    15033.00
MF255005    01/31/2013  1617    15033.00
MF255005    01/31/2013  1639    15033.00
MF255005    01/31/2013  1732    15033.00

我想排除每个 qlid 的第一行和最后一行。关于我将如何做到这一点的任何想法?

4

1 回答 1

1

尝试:

;with cte as
(SELECT e.*,
        row_number() over(partition by qlid order by emp_time) rna,
        row_number() over(partition by qlid order by emp_time desc) rnd
 FROM Entry_Time e
 where (qlid='fs255015' or qlid='mf255005') and emp_date='2013-01-31')
SELECT QLID, 
       Emp_Date, 
       Emp_Time, 
       sum(case when 1 in (rna,rnd) then 0 else emp_time end) 
          over(partition by qlid) conditional_sum
FROM cte 

SQLFiddle在这里

于 2013-04-26T11:00:51.353 回答