我有三個表,分別是UserInfo
,Departments
& CheckInOut
。並按照以下步驟選擇所有錯過日期的日期SQL Server
ALTER procedure [dbo].[spGetLogs]
@DateFrom datetime,
@DateTo datetime,
@UserID varchar(max)
as
begin
declare @Query varchar(max)
set @Query = 'SELECT Badgenumber, Name, min(checktime) as [Check Time], CHECKTYPE as [Check Type]
from USERINFO
inner join DEPARTMENTS as dept
on USERINFO.DEFAULTDEPTID = dept.DEPTID
inner join CHECKINOUT
on USERINFO.USERID = CHECKINOUT.USERID
where CHECKINOUT.USERID in (' + @UserID + ') and CHECKTIME between ''' + CONVERT(varchar, (@DateFrom)) + ''' AND ''' + CONVERT(varchar, (@DateTo )) + '''
group by CHECKINOUT.userid, USERINFO.Badgenumber, USERINFO.Name, CHECKTYPE, CONVERT(varchar, checktime, 101) order by CHECKINOUT.userid'
print @Query
Exec (@Query)
end
exec spGetLogs'01/14/2015', '03/31/2015', 1
我需要證明員工導致如下
1001 James Biser 2015-01-14 06:42:47.000 I
1001 James Biser 2015-01-17 06:38:06.000 I
1001 James Biser 2015-01-18 06:42:58.000 I
1001 James Biser 2015-01-19 06:38:00.000 I
1001 James Biser 2015-01-20 06:43:45.000 I
1001 James Biser 2015-01-21 06:42:14.000 I
1001 James Biser 2015-01-22 06:41:43.000 I
1001 James Biser 2015-01-24 07:25:31.000 I
1001 James Biser 2015-01-25 06:39:14.000 I
1001 James Biser 2015-01-26 06:35:48.000 I
1001 James Biser 2015-01-27 06:39:07.000 I
1001 James Biser 2015-01-28 06:49:51.000 I
1001 James Biser 2015-01-29 06:47:28.000 I
1001 James Biser 2015-01-31 07:21:18.000 I
1001 James Biser 2015-02-01 06:33:34.000 I
是與被在這裏缺少像14和16之間& 17,1月15日日期是日期缺席失蹤。我需要讓James Biser在缺席的日子裏缺席。
你不應該用sp開始你的過程,它是爲了系統過程。 –
除了JamesZ寫的內容之外,還需要使用日曆表的左連接來查看數據中缺少的日期。另外,在這種情況下,不需要動態SQL。使用表值參數將用戶標識傳遞給存儲過程。 –
在哪個日期,該人員不在,不存儲在數據庫中。我需要得到所有日期。 – user2955299