我試圖用一個相關子查詢,但我試圖把它限制在「最佳」的紀錄。當我使用SQL非常類似於後面的內容時,每個BigTable.identifier獲得兩行,我希望只有一行。在'聯合國'聲明中,下半場比上半場更令人滿意。但是,有時需要上半場。有任何想法嗎?下面的代碼:限制相關子查詢只是一個記錄
select
BigTable.identifier,
Correlated.ID,
Correlated.Effective_Date,
Correlated.Period_Number
from
BigTable
inner join
(
select
TOP 2147483647
Table3.identifier,
Table4.Effective_Date,
Table4.Period_Number
from
Table3
inner join Table4 on Table3.matching_key = Table4.matching_key
where
Table4.Period_Number = 0
order by Table4.Effective_Date desc
UNION
select
TOP 2147483647
Table3.Identifer,
Table4.Effective_Date,
Table4.Period_Number
from
Table3
inner join Table5 on Table3.matching-key = Table5.matching-key
inner join Table4 on Table5.key1 = Table4.key1 and
Table5.key2 = Table4.key2
where
Table4.period_number = 1
order by Table4.Effective_Date desc
) as Correlated
on BigTable.identifier = Correlated.identifier
你不說你如何決定哪個更好。也許內部查詢本身可以過濾掉存在EXISTS記錄的記錄,這些記錄可以用於UNION的其他部分。也許是某種類型的排名或得分,可以分配給UNION的每一行,讓高一個「贏」。取決於你將如何確定哪個人留下的細節。 –
我想從工會聲明中的最高記錄和基於period_number desc的排名(即,在上半部分的下半部分優先選擇1)和最近生效日期中選擇「最佳」 。但是,我無法弄清楚在哪裏放置「top 1」聲明,仍然可以從BigTable獲取所有記錄。 –