猿问

从 2 个表中删除查询中的重复结果 | SQL 服务器 2012

我可以就这个查询寻求帮助吗?physicianmasterfile.idno并CHECKINOUT.userid具有相同的值来比较数据。问题是查询有重复的结果。


SELECT DISTINCT CHECKINOUT.CHECKTIME,


physicianmasterfile.idno,

physicianmasterfile.lastname,

physicianmasterfile.firstname,

physicianmasterfile.middlename,

physicianmasterfile.fingerscanno,

CONVERT(DATE, CHECKINOUT.CHECKTIME) AS Date,

CONVERT(TIME(0),CHECKINOUT.CHECKTIME) AS Time


FROM 

physicianmasterfile,

CHECKINOUT 


WHERE  

CHECKINOUT.userid=physicianmasterfile.fingerscanno AND

CONVERT(DATE, CHECKINOUT.CHECKTIME) = CONVERT(DATE, SYSDATETIME()) AND

YEAR(CHECKINOUT.CHECKTIME) = YEAR(SYSDATETIME()) AND

CHECKINOUT.CHECKTYPE='I'


ORDER BY CHECKINOUT.CHECKTIME

我知道这UNION可以解决这个问题,但我不确定如何处理这个问题,physicianmasterfile因为我需要在查询中包含多个列,而CHECKINOUT我只需要 1 列。


这是上述查询的示例数据。

不应有重复的结果。


这是我到目前为止所得到的,但没有运气。


SELECT distinct R.idno, R.lastname, R.firstname, R.middlename, R.fingerscanno,

       LD.CHECKTIME, LD.CHECKTYPE,LD.USERID

FROM physicianmasterfile As R

LEFT JOIN CHECKINOUT AS LD on LD.USERID = R.fingerscanno

WHERE  

       CONVERT(DATE, LD.CHECKTIME) = CONVERT(DATE, SYSDATETIME()) AND

       YEAR(LD.CHECKTIME) = YEAR(SYSDATETIME()) AND

       LD.CHECKTYPE='I'

ORDER BY R.idno desc


互换的青春
浏览 191回答 1
1回答

繁花不似锦

我没有看到您的所有数据,但请尝试将您的 FROM 和 WHERE 子句更改为:    FROM        physicianmasterfile LEFT JOIN CHECKINOUT ON       physicianmasterfile.fingerscanno = CHECKINOUT.userid    WHERE         CONVERT(DATE, CHECKINOUT.CHECKTIME) = CONVERT(DATE, SYSDATETIME()) AND       YEAR(CHECKINOUT.CHECKTIME) = YEAR(SYSDATETIME()) AND       CHECKINOUT.CHECKTYPE='I'我没有测试过,所以我不知道它是否准确。
随时随地看视频慕课网APP
我要回答