我有一些麻烦,找出我需要从我的查询输出正确的语法。极限行输出
这里是我的数据(没有这些都不是正确的列名,我试图使它更容易阅读)我是从拉动实际的表有数据的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