Sql 仅显示5分钟内多个条目的第一条记录

Sql 仅显示5分钟内多个条目的第一条记录,sql,sql-server,Sql,Sql Server,我有一个查询,它以集合的形式显示行,每个行集合将有两个由1和2标识的记录。基本上是进进出出的时间。有时用户会多次打孔数据。例如,当他打“进去”时,他可能会打几次以确保安全,但实际上他应该只打一次。在打“出局”时,他可能会再打几次以确保安全,但实际上他应该只打一次。在每个条目上捕获时间。我需要将下面的查询配置为仅获取多个条目的第一次条目或记录。更准确地说,如果在5分钟内有多个条目,则仅显示第一条记录,而忽略特定5分钟内的其余记录 SELECT TransactionID, TrDate, Time

我有一个查询,它以集合的形式显示行,每个行集合将有两个由1和2标识的记录。基本上是进进出出的时间。有时用户会多次打孔数据。例如,当他打“进去”时,他可能会打几次以确保安全,但实际上他应该只打一次。在打“出局”时,他可能会再打几次以确保安全,但实际上他应该只打一次。在每个条目上捕获时间。我需要将下面的查询配置为仅获取多个条目的第一次条目或记录。更准确地说,如果在5分钟内有多个条目,则仅显示第一条记录,而忽略特定5分钟内的其余记录

SELECT TransactionID, TrDate, Time1, Tr_Serial, Port, UnitNo, UserPIN,Finger,
      IP, UnitName, Tr_Description,
      CASE WHEN ROW_NUMBER() OVER (PARTITION BY userpin, TrDate
      ORDER BY trdate, time1) % 2 = 0
      THEN '2'
      ELSE '1'
      END Tr_Type
      FROM (
      SELECT row_number() OVER (
      ORDER BY datetime) TransactionID, cast([datetime] AS date) TrDate, cast(
      [datetime] AS time) Time1, [eventserial] Tr_Serial, '1' Port, [READERID]
      UnitNo, [EVENTID] Tr_Type, [USERID] UserPIN, '1' Finger, 'NA' IP, [
      READERNAME] UnitName, [EVENTNAME] Tr_Description
      FROM [BBC].[dbo].[BBC_LOG]) A
      WHERE Tr_Type = 47 OR Tr_Type = 55
谢谢

SELECT TransactionID, TrDate, MIN(Time1), Tr_Serial, Port, UnitNo, UserPIN,Finger,
  IP, UnitName, Tr_Description,
  CASE WHEN Min(ROW_NUMBER()) OVER (PARTITION BY userpin, TrDate
  ORDER BY trdate, time1) % 2 = 0
  THEN '2'
  ELSE '1'
  END Tr_Type
  FROM (
  SELECT row_number() OVER (
  ORDER BY datetime) TransactionID, cast([datetime] AS date) TrDate, cast(
  [datetime] AS time) Time1, [eventserial] Tr_Serial, '1' Port, [READERID]
  UnitNo, [EVENTID] Tr_Type, [USERID] UserPIN, '1' Finger, 'NA' IP, [
  READERNAME] UnitName, [EVENTNAME] Tr_Description
  FROM [BBC].[dbo].[BBC_LOG]) A
  WHERE Tr_Type = 47 OR Tr_Type = 55
试试这个 不确定您的输出是什么,但我知道您需要datetime上的Min,以获取第一个日期/时间,即用户第一次打卡的日期/时间