Время заезда и выезда SQL - PullRequest
0 голосов
/ 09 июля 2020

простые данные таблицы

Моя таблица:

SELECT TOP (1000) 
    [ID]
    ,[UserName]
    ,[CheckTime]
    ,[Checktype]
    ,[CheckinLocation]
    ,[lat]
    ,[lng]
FROM 
    [dbo].[CheckTime]


INSERT INTO [dbo].[CheckTime] ([UserName], [CheckTime], [Checktype],[CheckinLocation], [lat], [lng])
VALUES (<UserName, nchar(10),>
        ,<CheckTime, datetime,>
        ,<Checktype, nvarchar(50),>
        ,<CheckinLocation, nvarchar(50),>
        ,<lat, float,>
        ,<lng, float,>)
GO

Сценарий создания таблицы:

CREATE TABLE [dbo].[CheckTime]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nchar](10) NULL,
    [CheckTime] [datetime] NULL,
    [Checktype] [nvarchar](50) NULL,
    [CheckinLocation] [nvarchar](50) NULL,
    [lat] [float] NULL,
    [lng] [float] NULL,

    CONSTRAINT [PK_CheckTime] 
        PRIMARY KEY CLUSTERED ([ID] ASC)
                    WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Мне нужно выбрать каждый отдельный дом, содержащий максимальное значение datetime.

  • max CheckTime при проверке
  • min CheckTime при проверке

Мне нужен такой результат:

id | Username | check in          | check out
---+----------+-------------------+-------------------
1  |   10     | 2017-1-2 08:02:05 | 2017-1-2 10:02:05
1  |   12     | 2017-1-2 08:02:05 | 2017-1-2 10:02:05
1  |   12     | 2017-1-3 08:02:05 | 2017-1-3 10:02:05
1  |   10     | 2017-1-3 08:02:05 | 2017-1-3 10:02:05

Я пробовал:

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете попробовать следующий запрос.

Select Username
  , Cast(CheckTime as Date) as CheckDate
  , min(CheckTime) as [check in]
  , max(CheckTime) as check out
From CheckInTable
Group by id, Username, Cast(CheckTime as Date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...