這是SQL Server查詢,需要轉換到MS Access 2003:轉換SQL Server查詢到MS Access 2003
select distinct u.ssn,u.[name],d.deptname,convert(varchar(12),c.checktime,103)Date,
case when convert(varchar(8),min(checktime),8) between(select convert(varchar(8),checkintime1,8)startin
from schclass_bak where schname like'Morning')and(select convert(varchar(8),checkintime2,8)endin
from schclass_bak where schname like'Morning')
then convert(varchar(8),min(checktime),8) else '0' end MOIN,
isnull((select max(convert(varchar(8),(checktime),8))
from checkinOut g
where (convert(varchar(8),(checktime),8)) between (select convert(varchar(8),checkouttime1,8)startOut
from schclass_bak where schname like'Morning') and (select convert(varchar(8),checkouttime2,8)endout
from schclass_bak where schname like'Morning') and g.USERID=u.userid and convert(varchar(12),g.checktime,103)=convert(varchar(12),c.checktime,103)),'12:00')Mout,
case when convert(varchar(8),max(checktime),8) between(select convert(varchar(8),checkintime1,8)startin
from schclass_bak where schname like'Afternoon')and(select convert(varchar(8),checkintime2,8)endin
from schclass_bak where schname like'Afternoon')
then convert(varchar(8),max(checktime),8) else '0' end AIN,
case when convert(varchar(8),max(checktime),8) between(select convert(varchar(8),checkouttime1,8)startOut
from schclass_bak where schname like'Afternoon')and(select convert(varchar(8),checkouttime2,8)endout
from schclass_bak where schname like'Afternoon')
then convert(varchar(8),max(checktime),8) else '17:30' end AOUT
from checkinOut c inner join userinfo u on c.userid=u.userid
inner join departments d on u.defaultdeptid=d.deptid
where cast(convert(varchar(12),c.checktime)as smalldatetime)between '20170401' and '20170425' and u.ssn='50'
group by convert(varchar(12),c.checktime,103) ,u.ssn,u.[name],d.deptname,u.USERID
我感謝所有幫助。謝謝
您是否嘗試過自己轉換呢?你遇到了什麼問題? –
是的,我嘗試過,但我得到了太多的錯誤,MS訪問不支持的情況下,運營商之間 –
這個查詢使我想要拿出我的眼球,並彈出它們。閱讀起來很糟糕,而且一遍又一遍地發出相同的查詢。這需要以一種有意義的方式重寫。你在這裏也有一些邏輯問題。比如將datetime轉換爲字符串,然後進行範圍比較。 –