我正在使用Ms SQL数据库, 我的表看起来,
SrNo Emp_ID Date Time
------------------------------------
1 25 03-Sep-12 9:35:35 AM
2 25 03-Sep-12 10:31:32 AM
3 25 03-Sep-12 10:34:13 AM
4 25 03-Sep-12 11:05:08 AM
5 25 03-Sep-12 11:08:39 AM
6 25 04-Sep-12 09.05.40 AM
预期输出
SrNo Emp_ID Date Time Type
---------------------------------------------
1 25 03-Sep-12 9:35:35 AM IN
2 25 03-Sep-12 10:31:32 AM OUT
3 25 03-Sep-12 10:34:13 AM IN
4 25 03-Sep-12 11:05:08 AM OUT
5 25 03-Sep-12 11:08:39 AM IN
6 25 04-Sep-12 09.05.40 AM IN
对于员工,必须在特定日期同时添加“in”和“out”。对于下一个日期或下一个/同一个员工,类型必须以“IN”开头。任何1都可以帮助我编写SQL查询。
答案 0 :(得分:0)
您可以使用其他列
来实现此目的 ROW_NUMBER() OVER (PARTITION BY Emp_ID, Date ORDER BY Time) AS RN
然后检查模数2,如果余数为1,则为IN,如果为0,则根据您的要求为OUT。
更具体地说
CASE WHEN
ROW_NUMBER() OVER (PARTITION BY Emp_ID, Date ORDER BY Time) % 2 = 1
THEN 'IN'
ELSE 'OUT'
END AS [Type]