由于该社区的一些用户已经回答了我的问题,所以我想问另一个具有不同标准的人。这是我问Previous question的最后一个问题,我想加以改善。
表格:persona
Name date time InOut
--------------------------------------------------------------
MANCA GIOVANNI 2019-12-06 10:50:00.0000000 I
MANCA GIOVANNI 2019-12-06 10:52:00.0000000 I
MANCA GIOVANNI 2019-12-06 10:55:00.0000000 I
MANCA GIOVANNI 2019-12-06 12:55:00.0000000 O
MANCA GIOVANNI 2019-12-06 12:57:00.0000000 O
HAMPIT RICKY 2019-12-06 12:55:00.0000000 O
HAMPIT RICKY 2019-12-06 10:50:00.0000000 I
RODRIGUEZ CARLOS DANIEL 2019-12-06 10:50:00.0000000 I
RODRIGUEZ CARLOS DANIEL 2019-12-06 12:55:00.0000000 O
基于该表,我希望得到如下输出
Name date InTime OutTime
--------------------------------------------------------------
MANCA GIOVANNI 2019-12-06 10:50:00.0000000 12:55:00.0000000
MANCA GIOVANNI 2019-12-06 10:52:00.0000000 12:57:00.0000000
MANCA GIOVANNI 2019-12-06 10:55:00.0000000 ? (I don't know how to handle it, maybe someone can help me think it out)
HAMPIT RICKY 2019-12-06 10:50:00.0000000 12:55:00.0000000
RODRIGUEZ CARLOS DANIEL 2019-12-06 10:50:00.0000000 12:55:00.0000000
这是我用来使其正常运行的最佳答案,但由于它一次只能显示一个人,因此它是有限的
SELECT
Name, date,
MAX(CASE WHEN InOut = 'I' THEN time END) AS Intime,
MAX(CASE WHEN InOut = 'O' THEN time END) AS Outime
FROM
persona
GROUP BY
Name, date
谢谢
答案 0 :(得分:2)
您可以使用row_number()
:
select Name, date,
max(CASE WHEN InOut = 'I' THEN time END) AS Intime,
max(CASE WHEN InOut = 'O' THEN time END) AS Outime
from (select p.*,
row_number() over (partition by name, date, inout order by time) as seqnum
from persona p
) p
group by name, date, seqnum