2017-03-05 87 views
0

我有一個相當簡單的問題,但我碰巧知道自己不足以回答它。我有一個包含每月財務數據的表格,另外還有一張表格用於繪製地圖。在這兩個表我都有相應的三個字段/列:加入Access中的多個字段(SQL)

  • 合資段賬戶
  • 合資CAPEX科技領域
  • 移動代碼

我需要在「移動代碼」隨時加入,但當合資分部賬戶爲「[無]」時,我需要與「合資格科技區」合併,當「合資格科技區」爲「[無]」時,我需要加入「合資分部賬戶」。所以這是一個雙連接(總是包括移動代碼,但是有一個可變的第二連接)。是否可以在一個查詢中做到這一點?

enter image description here

由於提前,

米希爾

回答

1

以下是得到你的答案的一種方式。要翻譯這回你的表和字段:

  • ID =移動代碼 - 這兩者相匹配,因此內部連接
  • FLDA = JV段賬戶
  • FLDB =合資公司的資本支出高新區
  • 如果字段的表之間的匹配,然後選擇

    SELECT Table1.ID, Table1.FldA, Table1.FldB, Table2.FldA, Table2.FldB, 
        IIf([Table1].[FldA]=[Table2].[FldA],'Match',"") AS Same2, 
        IIf([Table1].[FldB]=[Table2].[FldB],'Match',"") AS Same3 
        FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID 
        WHERE (((IIf([Table1].[FldA]=[Table2].[FldA],'Match',""))="Match")) 
        OR (((IIf([Table1].[FldB]=[Table2].[FldB],'Match',""))="Match")); 
    
0

考慮聯合查詢:

SELECT * 
FROM MonthlyFinancialTable f 
INNER JOIN MapTable m 
ON f.[Movement code] = m.[Movement code] 
AND f.[JV CAPEX TECH AREA] = m.[JV CAPEX TECH AREA] 
WHERE f.[JV Segment Account] = '[NONE]' 

UNION ALL 

SELECT * 
FROM MonthlyFinancialTable f 
INNER JOIN MapTable m 
ON f.[Movement code] = m.[Movement code] 
AND f.[JV Segment Account] = m.[JV Segment Account] 
WHERE f.[JV CAPEX TECH AREA] = '[NONE]' 
0

謝謝,我會在速度上測試兩種解決方案!

問候,

米希爾