2
我有一個人員列表,有4種類型可以發生以及每種類型5種分辨率。我試圖寫一個單一的查詢,以便我可以爲每個人提供每種類型/分辨率組合,但遇到問題。這是我到目前爲止有:使用從子查詢中的where子句中的select查詢中的字段
SELECT person,
TypeRes1 = (SELECT COUNT(*) FROM table1 where table1.status = 45)
JOIN personTbl ON personTbl.personid = table1.personid
WHERE person LIKE 'A0%'
GROUP BY person
我已經調整了列名,使之更多...通用的,但基本上是人表有幾百人,而我只是想A01至A09,所以像聲明是最簡單的方法來做到這一點。問題是,我的結果最終是這樣的:
Person TypeRes1
A06 48
A04 48
A07 48
A08 48
A05 48
這是不正確的。我無法弄清楚如何讓每個人的列數正確。我試着做類似:
SELECT person as p,
TypeRes1= (SELECT COUNT(*) FROM table1
JOIN personTbl ON personTbl.personid = table1.personid
WHERE table1.status = 45 AND personTbl.person = p)
FROM table1
JOIN personTbl ON personTbl.personid = table1.personid
WHERE personTbl.person LIKE 'A0%'
GROUP BY personTbl.person
但是,這給了我錯誤:無效的列名'p'。是否有可能將p傳遞給子查詢,還是有另一種方法來實現它?
編輯:還有19種不同的狀態,所以會有19種不同的TypeRes,爲簡潔起見,我只是把它放在一邊,我想我可以自己做其餘的。
輝煌!奇蹟般有效。非常感謝!昨天我幾個小時一直在掙扎着。 – Jetti 2012-02-28 15:19:52
很高興幫助。快樂編碼:D – Arion 2012-02-28 15:22:33
謝謝Arion!你用這個救了我的屁股。還保存了一些服務器空間,因爲我不必問相同的問題:) – ScruffMcGruff 2013-01-15 16:20:22