我只需要在不重複的情況下獲得獨特的address_id。這是我的查詢。從sql數據集中刪除重複的address_id
SELECT DISTINCT address.address_id, address.address1, address.streetcity, state.stateabbrev, rtrim(ltrim(case when address.streetzipcode is not null and address.streetzipcode != 'NULL' then address.streetzipcode else '' end))+case when len(address.streetzipplus4)>0 then '-'+rtrim(ltrim(address.streetzipplus4)) else '' end as streetzipcode, address.homephone,
dbo.f_addressstudent (student.address_id) as Students,
dbo.f_addresspeople (student.address_id) as Adults,
case
when @classif_id IS NULL then 0
else
student.classif_id
end classif,
classifctn
FROM district WITH(NOLOCK)
JOIN dbo.building ON building.district_id = district.district_id
JOIN dbo.studbldg_bridge WITH(NOLOCK) ON studbldg_bridge.bldg_id=building.bldg_id
JOIN dbo.student WITH(NOLOCK) ON student.student_id = studbldg_bridge.student_id
JOIN classif with(nolock) on student.classif_id = classif.classif_id
LEFT JOIN dbo.address WITH(NOLOCK) ON student.address_id = address.address_id
LEFT JOIN dbo.state WITH(NOLOCK) ON address.streetstate_id = state.state_id
LEFT JOIN dbo.state AS mailstate WITH(NOLOCK) ON address.state_id = mailstate.state_id
WHERE district.district_id = (SELECT district_id FROM dbo.building WITH(NOLOCK) WHERE bldg_id = @bldg_id)
ORDER BY classif,Adults, Students
這裏查詢 Query result with error in data
我已經試過組,使用聚合函數ADDRESS_ID但我也有非集合列,以便它並沒有爲我工作的結果。 之後,我也嘗試使用OVER(由address.address_id分區),但它也沒有奏效。
任何幫助將提前感激。
謝謝
**更新業務邏輯/需求**
我需要獲得唯一的地址爲學生的家長。由於父母可以有兩個或更多的孩子住在同一個地址,所以會導致重複。換句話說,我需要每個父母只有一個孩子。
當有重複,應該如何分類(例如)是決心?如果沒有充分定義您的要求,就不可能得到「正確」的答案。 –
我刪除了mysql標記,因爲如果您嘗試使用窗口函數OVER(分區....),這意味着您沒有使用它,因爲窗口函數不存在於mysql中。請僅標記您實際使用的rdbms。 – Matt
我正在更新問題以向您提供有關需求的更多信息。 – NKhan