Here is my tableKnow Присутствует Отсутствует от работы Диапазон дат
Я хочу, чтобы все пользователи, которые присутствуют/отсутствуют между заданном диапазоне дат.
CREATE TABLE [tt](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserId] [varchar](20) NULL,
[EmpCode] [varchar](50) NULL,
[Name] [varchar](200) NULL,
[WorkDate] [varchar](20) NULL,
[InTime] [varchar](20) NULL,
[OutTime] [varchar](20) NULL,
[TotalTime] [varchar](50) NULL,
)
insert into [tt] values
('106','E2E106','Goutam Kumar','2017-02-21','12:54:54 PM','10:06:42 PM','08:55:00')
,('106','E2E106','Goutam Kumar','2017-02-20','12:49:21 PM','09:26:27 PM','07:53:00')
,('106','E2E106','Goutam Kumar','2017-02-15','12:31:51 PM','09:21:14 PM','08:30:00')
,('106','E2E106','Goutam Kumar','2017-02-13','05:46:06 PM','09:32:17 PM','03:46:00')
,('106','E2E106','Goutam Kumar','2017-02-14','01:02:28 PM','09:32:50 PM','07:39:00')
,('111','E2E111','Mansi Manchanda','2017-02-21','12:42:42 PM','09:09:42 PM','08:07:00')
,('111','E2E111','Mansi Manchanda','2017-02-17','12:09:11 PM','09:40:46 PM','06:36:00')
,('111','E2E111','Mansi Manchanda','2017-02-16','11:56:21 AM','09:20:08 PM','08:07:00')
,('111','E2E111','Mansi Manchanda','2017-02-15','01:07:19 PM','09:57:40 PM','08:30:00')
CREATE TABLE tUserInfo(
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserId] [nvarchar](20) NULL,
[Name] [nvarchar](200) NULL,
[EmpCode] [varchar](200) NULL,
)
INSERT into tUserInfo VALUES
('106','Goutam Kumar','E2E106')
,('111','Mansi Manchanda','E2E111')
,('112','Arvind Kumar Prajapati','E2E112')
,('116','Rahul Garg','E2E116')
Я могу получить настоящее или отсутствующее состояние пользователя для данной даты. Но мой вопрос здесь в том, что я хочу, чтобы все пользователи присутствовали/отсутствовали между заданным диапазоном дат.
Я хочу данных выглядеть следующим образом:
Id UserId Name EmpCode InTime OutTime WorkDate Status
1 106 Goutam Kumar E2E106 2017-02-13 Present
2 111 Mansi Manchanda E2E111 2017-02-14 Absent
3 112 Arvind Kumar E2E112 2017-02-14 Absent
4 116 Rahul Garg E2E116 2017-02-17 Absent
Вы должны хранить ваши даты как 'date' типов данных. – SqlZim
Хотя это не касается вашей проблемы, вам следует позаботиться о нормализации. У вас есть имя сотрудника (?) Дважды в вашей базе данных, один раз в таблице 'tUserInfo' и много раз в вашей таблице' tt'. Если какие-либо имена пользователей будут изменены, вам придется пройти через все записи в 'tt' и изменить его. В противном случае - если вы не храните его здесь - вам просто нужно изменить его один раз в таблице 'tUserInfo'. –