我希望从表BAUSER获得USER_FNM
(用户的名字),每个USER_KEY
。从我的查询返回结果,但只显示USER_FNM
从表中的第一个 - Superadministrator。我不知道什么是错的 - USER_KEY
是否在子查询中迭代?来自主要查询的子查询中的变量
下面是查询:
SELECT DISTINCT USER_KEY, (SELECT TOP(1) USER_FNM FROM BAUSER WHERE BAUSER.USER_KEY = USER_KEY), SUM([110000003]),SUM([120000002]),SUM([120000003])
FROM CAUSDE_TAS CA
PIVOT
(
SUM(USDE_HSU)
FOR DEPA_KEY IN ([110000003],[120000002],[120000003]
) PIVOT_LOCATIONS
WHERE USDE_DAT >= '01.12.2016' AND USDE_DAT <= '03.02.2017'
AND USER_KEY IN (100000002,100000004,100000006,100000008,100000011)
GROUP BY USER_KEY
这里有结果:
这种行为背后的原因是, USER_KEY作为列存在于BAUSER表和PIVOT_LOCATIONS结果中表。大多数情况下,SQL查询优化器读取关闭USER_KEY的BAUSER.USER_KEY,所以它以BAUSER.USER_KEY = BAUSER.USER_KEY结束,该BAUSER.USER_KEY返回BAUSER表中的所有行。之后我们有TOP(1),它返回第一条记录(显然是“Suporadministrator”)。如果没有TOP(1)子句,这个查询应该可以正常工作,因为我猜USER_KEY是唯一的。通过删除TOP(1),故障逻辑将立即弹出。 – Vladislav