我在确定我需要从查询中输出的内容的正确语法时遇到了一些麻烦。
这是我的数据(不,这些不是正确的列名,我试图让它更容易阅读)我从中提取的实际表有 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 记录,选择较低的记录号或选择 Dept 不是 400 的记录(400 行将始终是较高的记录号)
如果只有一条 S 记录,并且 Dept 为 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
而我想要做的是把“limit = 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
像泥一样清澈,对吧?
我不断收到错误。有没有一种我只是想念的“简单”方法?
谢谢你提供的所有帮助。
米歇尔