嗨不知道是否有人可以幫助我處理這個查詢。我有一個數據集,其中有兩列。 A欄/ B欄;我們稱之爲Table UpdateData。在SQL查詢中映射兩個不同的列
還有兩個Access數據表,這些數據表是這些代碼的映射表。一個表是更新前代碼(oldCodes),另一個是後期更新代碼(NewCode)。在我的數據集中,列A具有更新前代碼,列B具有更新後代碼。我的想法是這兩個Access表新老代碼結合到SQL服務器(2005)一個表像這樣創建表combinedCodes:
Oldcode display
===== =======
RTYX45 No
GHYUN6 No
BYUER5 Yes
Newcode display
===== =======
VUJNG6 Yes
LERWS8 No
XCRYU7 Yes
code display
===== =======
RTYX45 No
GHYUN6 No
BYUER5 Yes
VUJNG6 Yes
LERWS8 No
XCRYU7 Yes
注意這僅僅是數據的一個例子,有很多更行比顯示。
因此,如果我加入updateData和Combined代碼,我該如何設置它,以便一個字段(顯示)可以顯示來自列A/B(或不是)的匹配。當我只加入一列時,可以說列A與左連接到來自combinedCodes表的updateData表中我在我的combinedCodes顯示字段中獲得了正確的數據,並且爲那些不匹配的元素指定了空值。
但後來我引入了另一個連接從列B使用左連接到我的更新數據表CombinedCodes和combinedCodes顯示舊代碼之前,空值,我想要的,但也顯示舊代碼之前新代碼是用過的。我對實際發生的事情有些混淆,因此這可能不是100%正確的,但是當比較每個查詢結果與單個連接時,查詢結果與列A和列B的連接是不同的,儘管添加時數據的計數相同從單獨的查詢中提取個人數量。
select c.Fields
--,f.Display
,pt.Display
from UpdateData c
INNER JOIN PRE_CODES pt
ON c.columnA = pt.code -- only for pre-codes
--INNER JOIN POST_CODES f
--ON c.columnB = f.code
註釋掉的連接和字段用於後綴代碼,另一個用於預代碼。如果我包含左外部聯接以顯示郵政編碼的空值,然後引入第二個聯接和f.display加上左側聯接字段它不顯示相同的結果,如果我分別運行每個並將它們組合。
這種連接是超越我加入的理解,我不知道我應該在這裏做什麼,以便在任何你誰可以幫我這個
感謝
安德魯
嘿,+1比一般的過度文字連接寫法更好的答案!很好的問題。 – criticalfix
@JacobM當然(用手掌打額頭)結合是一個非常好的選擇!一段時間沒有使用SQL,完全忘了!你的其他選擇是我在做什麼的一半,但你已經提供了一個解決方案,分別顯示每個列結果,然後將它們結合起來。最重要的是,我還試圖理解兩個連接到同一個表的邏輯/方法/在一列中顯示結果,這不是我必須做的事情,所以這是一個有趣的問題。 – Andrew
@JacobM感謝您的解決方案 – Andrew