我有一些麻煩,找出我需要從我的查詢輸出正確的語法。極限行輸出
這裏是我的數據(沒有這些都不是正確的列名,我試圖使它更容易閱讀)我是從拉動實際的表有數據的26列。
employeeNumber - recordNumber - job - dept - type
12 - 1 - stapler - 788 - s
12 - 6 - paper pusher - 400 - s
18 - 2 - phone cleaner - 600 - p
18 - 4 - sweeper - 567 - s
19 - 0 - typist - 400 - s
21 - 0 - mouse ball cleaner - 400 - p
因此,這裏有評選規則:
如果類型爲P選擇記錄
如果員工有沒有P紀錄,選S
如果員工有多個S記錄,選擇較低的記錄號或選擇該記錄的部門是不是400(400行將始終是更高的記錄號)
如果只有一個的紀錄,而部門是400行應退還
這是什麼是目前的工作:
SELECT employeeNumber, recordNumber, job, dept, type
FROM employees
WHERE (type = 'P')
OR
(type = 'S'
AND employeeNumber NOT IN
(
SELECT employeeNumber
FROM employees
WHERE type = 'P'
)
)
ORDER BY employeeNumber, recordNumber
,我希望做的就是把什麼「限制= 1」(或類似的東西)末,使多個S行的情況下,下recordNumber會爲在行回。
這是應該從上面的數據可以返回記錄集:
employeeNumber - recordNumber - job - dept - type
12 - 1 - stapler - 788 - s
18 - 2 - phone cleaner - 600 - p
19 - 0 - typist - 400 - s
21 - 0 - mouse ball cleaner - 400 - p
清除泥漿,對不對?
我不斷收到錯誤。有沒有一種「簡單」的方式來做到這一點,我只是失蹤?
感謝您提供任何幫助。
米歇爾
關於較低的記錄號/不是部門400的OR只是在那裏的信息。你是對的,剩下的就足夠了。 我會給你一個嘗試一點(我現在正在深陷另一個問題。) – Michelle 2011-12-29 16:51:28