我正在执行以下查询
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的求和中排除第一行和最后一行。关于我将如何做的任何想法?
答案 0 :(得分: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 here。