1
我有兩個表V和E,我需要做一個奇怪的左加入。左加入兩個獨有條件
在E表有列:
COD_Obj具有6個字母
,其具有3個字母
在V表
COD_P有一列:
- O_OR_P作爲可以具有互斥
- 一個具有9個字母和它的第一個6個字母與E.COD_Obj
- 在P相匹配的OBJ即12個字母和其最後的3個字母與E.COD_P
我嘗試以下查詢:
SELECT DSC,
COUNT(IIF([Cost] IS NOT NULL, 1, NULL)) AS [N Cost]
, INT(SUM(IIF([Cost] IS NOT NULL, [Cost], 0))) AS [Total Cost]
, INT(SUM(IIF([Fees] IS NOT NULL, Fees, 0))) AS [Total Fees]
LEFT JOIN E ON LEFT(V.P_OR_O,6)=E.COD_Obj
OR RIGHT(V.P_OR_O,3)=E.COD_P
GROUP BY DSC
ORDER BY DSC
它確實分組正確的,但每個組返回TOO多電成本,總成本,和總費用的。我懷疑這個查詢的結果有重複的事情。
如果我將LEFT JOIN的OR更改爲AND,我將只看到一行,僅對應於一個組。
我感到眼花繚亂,感到困惑。請幫助如何做兩個替代標準的比賽。而且,在你問之前,是的,V.P_OR_O字段可以有空/空值。
不,我現在不能改變數據模型,因爲人們依賴於這個數據庫,並且我無法控制服務器重新定義數據庫結構。
這些表都在SQL服務器上,我使用Microsoft Office的Access來查詢它們。
我糾正了查詢,因爲它沒有工作。 Access中的ISNULL具有不同的含義:它表示值是否爲空。我刪除了鏈接,因爲它們指向的文檔不對應 – sergiol
Altought現在的值稍低一些,查詢仍然給我的值比它應該更大! – sergiol
嘗試刪除總和和組,並將其運行到excel中,並查看錯誤的位置。該查詢對我來說看起來很好,因此您的數據或您的數據描述有問題。如果表V具有這些值並且您只希望具有表E中的條目的值,則切換連接的順序'FROM E LEFT JOIN V' – Ghost