我在ASP.NET MVC4項目(使用Visual Studio 2010)中使用Reporting Service來生成報告,並使用存儲過程。我有一張桌子產品它可以屬於人。這就是分配的概念。產品可以被分配給不同的人(多到許多關係),我有這兩個之間的中間表:SQL - 使用報告服務進行報告的存儲過程
我想TOT我的報告做的事情是,以顯示相關信息包括所有者在內的每個現有產品。在這種情況下,我可以有兩種類型的所有者:公司(因此產品從未分配過或最後分配有一個EndDate)或一個人(因此最後一次分配沒有EndDate或有一個「未來」EndDate)。
我知道所有這些驗證應該在我的報告模板中進行,但對於SQL存儲過程,我不知道如何進行每個產品的最後分配(如果有的話)。
任何想法可以幫助歡迎。
編輯:更新查詢
SELECT pr.SerialNumber, coalesce (p.LastName, 'US') as Owner
FROM bm_Products pr
LEFT OUTER JOIN
(Select Id_Person, Id_Product, max(ISNULL(EndDate,getdate()+1)) as MaxAllocDate
FROM bm_ProductAllocations a
WHERE EndDate > getdate()
group by Id_Person, Id_Product
having max(ISNULL(EndDate, getdate()+1)) =
(select max(isnull(EndDate, getdate()+1))
from bm_ProductAllocations where Id_Product = a.Id_Product)
) pa on pr.Id_Product = pa.Id_Product
LEFT OUTER JOIN bm_Persons p on pa.Id_Person = p.Id_Person
結果:
SerialNumber Owner
-------------------------------------------------- --------------------------------------------------
78745148154815204 US
84512048150410522 US
84512841520415205 US
87451284512485120 US
56123051215215215 US
48512485487487856 US
CNU1510ZL0 US
8456656551521 US
4154854854151 US
4851205230047 US
4511120521050 US
84515151320541201 US
74161230326524165 US
感謝您的幫助。事實上,在我的數據庫中,我所有的表都以「bm_」開頭,因此我試圖根據需要調整查詢。無論如何,當我想測試執行它時,我遇到了一個錯誤:沒有爲'pa'的列3指定列名。你有好主意嗎?再次感謝 ! – Traffy 2013-05-03 07:17:39
子查詢必須具有所有字段的字段名稱。我忘記了最大分配日期的別名。上面編輯。讓我知道這是如何解決的 – 2013-05-03 17:03:35
感謝您的修改,現在查詢可以毫無問題地執行。無論如何,對於我所有的產品,我得到「美國」作爲所有者,這意味着該產品沒有分配或最後的分配已完成...編輯以讓您知道我有什麼。再次感謝 ! – Traffy 2013-05-04 08:17:20