我有来自SQL Server的出勤数据,必须将其分为两列(进出)。
这里是一个例子:
这是我想要的结果
查询:
CREATE TABLE [dbo].[Table1]
(
[ID] [varchar](50) NULL,
[DATETIME] [datetime] NULL,
[Flag] [int] NULL
)
INSERT INTO table1
VALUES ('ID-1', '2019-03-13 09:48:00.000', '2'),
('ID-1', '2019-03-13 09:48:00.000', '2'),
('ID-1', '2019-03-13 18:11:00.000', '3'),
('ID-1', '2019-03-13 18:11:00.000', '3'),
('ID-1', '2019-03-14 02:00:00.000', '3'),
('ID-1', '2019-03-14 09:54:00.000', '2'),
('ID-1', '2019-03-14 09:54:00.000', '2'),
('ID-1', '2019-03-14 09:54:00.000', '2'),
('ID-1', '2019-03-14 22:00:00.000', '3'),
('ID-1', '2019-03-14 22:00:00.000', '3'),
('ID-1', '2019-03-14 22:00:00.000', '3'),
('ID-1', '2019-03-15 13:55:00.000', '2'),
('ID-1', '2019-03-15 13:55:00.000', '2'),
('ID-1', '2019-03-15 13:55:00.000', '2'),
('ID-1', '2019-03-15 13:55:00.000', '2'),
('ID-1', '2019-03-15 13:55:00.000', '2'),
('ID-1', '2019-03-15 22:00:00.000', '3'),
('ID-1', '2019-03-15 22:00:00.000', '3'),
('ID-1', '2019-03-15 22:00:00.000', '3'),
('ID-1', '2019-03-15 22:00:00.000', '3')
注意:
标志2表示IN,3表示OUT。
可以进行多次签入和签出,所以我们必须采用先进先出的方式。
可能会加班,因此有时我们必须检查第二天的结帐数据。
我该怎么做?
答案 0 :(得分:0)
也许尝试从Ins到outs的左联接,并找到该intime之后的最早的时间。
以下示例(未经测试):
def foo():
dict_1 = dict()
dict_2 = dict()
return dict_1, dict_2
# Do either one of the following (indexing or unpacking)
# Indexing a tuple
return_value = foo()
dict_1 = return_value[0]
dict_2 = return_value[1]
# Unpacking a tuple
dict_1, dict_2 = foo()