1
我試圖創建一個視圖,它需要一個基表並將其連接到多個其他表的信息,並在原表中返回每行一行。舉例來說,假設我正在匹配大學畢業生就業和研究生院的數據...因爲事實上,我正在做的是。現在,問題在於我可以在就業和研究生數據中獲得多個匹配。人們可以爲一個以上的僱主工作,或者他們可以去一所研究生院,然後決定轉學。這會在我加入時創建重複行,然後需要通過聚合(或其他方式)消除。創建多個連接的視圖
我目前的解決方案是不嵌套的聯接/查詢是這樣的:
select ID, GradYear, max(Salary) as Salary, case when sum(case when S.Year=GradYear+1 then 1 else 0 end)>0 then 1 else 0 end
from
(
select ID, GradYear, sum(case when W.Year=GradYear+1 then W.Wages else null end) as Salary
from
(
select ID, GradYear
from dbo.Students
where Graduated=1
) as G
left join dbo.Wages as W
on G.ID=W.ID
) as Inner
left join dbo.GradSchool as S
on Inner.ID=S.ID
這似乎有點醜對我來說,尤其是如果我想在更多的數據帶來的(比方說,我現在想看看爲他們在軍隊也)。有沒有更好的方式來完成加入?如果我只是直接將三張表加在一起,那麼如果他們有兩份研究生檔案,我就會重複計算人們的工資,例如......讓我知道您是否有解決方案!