我希望從表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