【发布时间】:2020-08-16 22:19:13
【问题描述】:
我有 3 个表 People、Distribution、DistributionPeopleDetails 如下:
我想检索人们获得上一次帮助的时间以及他们应该获得下一次帮助的时间。
我尝试以不同的方式连接三个表,但没有给我预期的结果,我对 SQL 不太熟悉,所以可能我只是在考虑基本连接,而它可能需要一些高级技巧,如 group by 等. 有人可以指导我吗?
到目前为止我已经尝试过了:
select top 1 P.Name, d.DistributionDate as 'Next Scheduled Help'
from Peoples p left join [dbo].[DistributionPeopleDetails] dp on p.Id =
dp.PeopleId
left join [dbo].[Distributions] d on dp.DistributionId = d.Id
where d.DistributionDate > GetDate() order by d.Id
select top 1 P.Name, d.DistributionDate as 'LastScheduled Help'
from Peoples p left join [dbo].[DistributionPeopleDetails] dp on p.Id =
dp.PeopleId
left join [dbo].[Distributions] d on dp.DistributionId = d.Id
where d.DistributionDate < GetDate() order by d.Id
我得到了我的预期结果,但我无法将这个 sn-p 查询放入我的 SP 中,我通过加入几个其他表来读取 People 的所有属性。
我得到/想要得到什么:
【问题讨论】:
-
请向我们展示您期望的结果。它还有助于以表格文本而不是图像的形式提供您的数据,并为您的表格命名。
-
“我尝试以不同的方式连接三个表,但没有给我预期的结果” 向我们展示该尝试,向我们解释为什么它不起作用。跨度>
-
用我试过的代码更新了问题。
标签: sql sql-server database tsql join