我試圖爲部門表中的每個部門獲取一個最新的Approved
風險評估(它是bit
列)。使用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