我怎樣才能重新編寫,以便它不會觸發以下錯誤此查詢:「不能對包含聚合或子查詢的表達式執行聚合函數」SUM使用CASE時選擇
SELECT
employees.loc_id
,SUM(CASE
WHEN
pos IN (SELECT DISTINCT pos FROM lookup WHERE lbl='Staff')
AND
loc IN (SELECT DISTINCT loc FROM lookup WHERE lbl='Staff')
THEN 1
ELSE 0
END) AS 'Staff Site 1'
,SUM(CASE
WHEN
pos IN (SELECT DISTINCT pos FROM table WHERE lbl='Staff')
AND
loc IN (SELECT DISTINCT loc FROM table WHERE lbl='Staff')
THEN 1
ELSE 0
END) AS 'Staff Site 2'
FROM table GROUP BY table.key_id ORDER BY key_id
因此很明顯,我不能把內SUM
一個SELECT
聲明?我如何確保我只是在總結上述代碼中描述的情況?
pos
確定位置的類型。 loc
決定在什麼地點(位置)。查找表的結構是這樣的:
pos | loc | lbl
123 | XYZ | Staff Site 1
456 | XYZ | Staff Site 1
987 | XYZ | Supervisor Site 1
123 | ABC | Staff Site 2
123 | JKL | Staff Site 3
123 | OPQ | Staff Site 4
456 | OPQ | Staff Site 4
345 | OPQ | Staff Site 4
該查找表只是確定與特定位置處的位置關聯的標籤。
有一張員工表,每個員工分配一個職位#。
,所以我想我的查詢從僱員表中選擇所有loc_id
(位置ID),併爲每個loc_id
,總結查找表
所以,如果我有30名員工與loc_id=XYZ
與pos=123
相應條目和20名員工與loc_id=XYZ
與pos=456
,輸出將提前
loc_id | Staff Site 1
XYZ | 50
謝謝,我希望這不是太混亂...
我懷疑這返回了OP想要返回的結果,但很難確定確切的規格。 「讓我們從鍵盤上移開手指,慢慢退開,然後*思考*我們正在努力實現的目標,以及如何解釋它......」 – spencer7593
輝煌的馬特。謝謝。 – blacksaibot