我有这样的数据......
with cte as
(select *, rn = row_number() over (partition by empid order by trtime)
from [10.xx.xx.xx].[dbName].dbo.[tableName] where empid='00ec2137' and trdate='01/13/2014'
)
select i.empid,i.trdate, i.trtime InTime, o.trtime OutTime
from cte i
inner join cte o on i.empid = o.empid
and i.rn = o.rn - 1
where i.InOUt = 1
and o.InOUt = 2
order by i.empid,i.rn
InOut 1 - “In timing”和2 - “out timing”。我希望在单独的列中按顺序排序数据,如In Timing和Out Timing。我在SQL 2012中使用上面的查询来显示如下所示的数据
获取输出
预期输出
在输出中,它仅显示前两行。由于第三行没有Out timing 2,因此不显示第三行。请建议我如何更正代码。
答案 0 :(得分:0)
简单我通过将内连接修改为左连接并删除o.InOUt = 2 in condtion
来实现此目的答案 1 :(得分:0)
我认为问题在于where子句。请尝试使用where where子句:
where (i.InOUt = 1)
and (o.InOUt = 2 or o.InOUt is null)
这将在用户退出或仍然登录时显示。