2

我在加入和分组两个表时遇到问题。我使用的是 ms sql server 2005 express

先感谢您!

4

2 回答 2

3

您只需要添加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您可以只更改日期字符串的格式而不是强制转换(因为它在小提琴中)。

于 2013-09-12T04:08:11.260 回答
0

根据您的架构,无法确定otd记录中的哪个任务ot正在引用。也许您的意思是在 ? 中包含一个任务列ot?例如,查看您在otd. 用户 xxx 在 上请求的任务 1 9/10/2013。现在查看 中的所有记录ot。您正在加入ot,并且xxx 请求otd.userid = ot.requested_by中有两条记录。ot因此,该连接匹配 xxx 的任务 1 的这两条记录,以及 xxx 的任务 2 的相同两条记录,然后再次匹配任务 5 和 6。

于 2013-09-12T04:11:55.880 回答