使用SQL,从表中为关联的外键表中的每个关联记录选择单个记录
我试图为部门表中的每个部门获取一个最新的Approved
风险评估(它是bit
列)。使用SQL,从表中为关联的外键表中的每个关联记录选择单个记录
我也需要所有部门的所有风险评估,但我想我可能会这样做,作为单独的查询或联合两个结果集。
下面是我的模式的简化版本,它的价值。
如果您有SQL 2005或更高版本,你可以用一个CTE来实现这个
with cte as (
select row_number() over (partition by DeptId, order by Submitted desc) as row,
id,
DeptId,
RiskAssessment,
Submitted,
Approved
from RiskAssesment where approved = 1
)
select
id,
deptid,
RiskAssessment,
Submitted,
Approved
from cte where row = 1
@Oscar感谢您的纠正,我永远不会记得哪个版本提供了哪个! – 2013-05-07 16:00:05
你先生......刚刚救了我的培根。非常感谢你,奥斯卡和本! – 2013-05-22 15:57:16
要获得latest Approved
任务,您将需要存储到列RiskAssessment
审批时间,那么你可以使用按组和最大值获得预期结果。
对于第二部分
所有各部门 我认为它时便会更容易没必要的子查询未获批准的风险评估。
Select DEPTID, id where Approved=0
如果这不是你的意思,我想我不明白你的问题很好。
你到目前为止?问题是什么?或者你只是想让别人做你的工作? – Oscar 2013-05-07 13:00:30
我喜欢有人来做我的工作,你提供?不要以为我只是在等待某个人回复我的拇指,我一直在寻找,最后几次在SO上回答我自己的问题。我真的不记得从哪里开始,这是一段时间,因为我不得不这样做。当我记不起适合谷歌的条款时,很难让自己开始。我怀疑我必须用一个子查询来完成,但这只是我所能得到的。 – BenCr 2013-05-07 13:08:14
FWIW上次我不得不这样做时,公用表表达式甚至不存在,即使我记得我没有找到答案。 – BenCr 2013-05-07 13:21:58