我在加入和分组两个表时遇到问题。我使用的是 ms sql server 2005 express。
先感谢您!
您只需要添加date_request
到您的JOIN
标准:
SELECT otd.userid,otd.task,otd.date_request,ot.approved_by
FROM otd
JOIN ot
ON otd.userid = ot.requested_by
AND otd.date_request = ot.date_request
WHERE otd.userid ='xxx'
AND CONVERT(varchar,otd.date_request,101) BETWEEN '09/10/2013' AND '09/11/2013'
AND ot.status ='A'
ORDER BY otd.date_request,ot.date_request ASC
演示:SQL 小提琴
注意:Fiddle 中更改了日期,但额外的JOIN
标准是重要的部分。此外,不确定您要转换日期字段的目的是什么,但如果是这样,DATE
您可以只更改日期字符串的格式而不是强制转换(因为它在小提琴中)。
根据您的架构,无法确定otd
记录中的哪个任务ot
正在引用。也许您的意思是在 ? 中包含一个任务列ot
?例如,查看您在otd
. 用户 xxx 在 上请求的任务 1 9/10/2013
。现在查看 中的所有记录ot
。您正在加入ot
,并且xxx 请求otd.userid = ot.requested_by
中有两条记录。ot
因此,该连接匹配 xxx 的任务 1 的这两条记录,以及 xxx 的任务 2 的相同两条记录,然后再次匹配任务 5 和 6。