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