尝试在Object_ID
如果无法做到这一点,请同时订购Object_ID
,因此两者 Object_ID
的副本本身也是如此,这对我来说也是有用的。但这并不适合我,因为我只能order by
一个Object_ID
,所以重复是他们自己。
表:
S_Anl
Ktr Anl
4711 1234
4711 5678
4711 9000
AB_Erg
Anl AB_Erg_Obj Value
1234 c9d91f 1000
1234 696bfc 2000
1234 8c9915 3000
5678 141a65 4000
E_BP
Anl E_BP_Obj Value
1234 99f75ab 500
1234 720e573 100
9000 830614c 50
9000 958ac28 200
查询
SELECT B.AB_Erg_Obj, C.E_BP_Obj, A.Anl, B.Value, C.Value
FROM PUB.S_Anl AS A
LEFT JOIN PUB.AB_Erg AS B ON A.Anl = B.Anl
LEFT JOIN PUB.E_BP AS C ON A.Anl = C.Anl
WHERE A.Ktr = '4711'
ORDER BY A.Anl, B.AB_Erg_Obj, C.E_BP_Obj
with (nolock)
预期结果
Anl AB_Erg_Obj E_BP_Obj Value Value
1234 c9d91f 99f75ab 1000 500
1234 696bfc 720e573 2000 100
1234 8c9915 NULL 3000 NULL
5678 141a65 NULL 4000 NULL
9000 830614c 830614c NULL 50
9000 958ac28 958ac28 NULL 200
或者在他们之间订购AB_Erg_Obj
和E_BP_Obj
。
这可能是其中之一吗?
//编辑:
我知道排序不会删除结果集中的重复项,但之后会更容易。
此外,数据在行级别上完全匹配并不是必需的,我只需要首先从E_BP和值AB_Erg中得到值的总和 - 因为不需要在行级别上进行精确匹配,在Object_ID-Level
上没有重复