Sql 条件分割
我有一个表Employee_Training,包含以下列: 雇员编号 课程号 完成日期 我使用此查询来显示培训,它过滤掉重复的日期,\u Completed,只显示最近的日期:Sql 条件分割,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个表Employee_Training,包含以下列: 雇员编号 课程号 完成日期 我使用此查询来显示培训,它过滤掉重复的日期,\u Completed,只显示最近的日期: SELECT x.* FROM (SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.Course_ID, t.Employee_Number ORDER BY t.Date_Completed DESC) AS rank FRO
SELECT x.*
FROM (SELECT t.*, ROW_NUMBER() OVER
(PARTITION BY t.Course_ID, t.Employee_Number
ORDER BY t.Date_Completed DESC) AS rank
FROM Employee_Training t) x
WHERE x.rank = 1
有没有办法格式化这个查询,不将分区应用于特定的课程ID,比如1000004?我想查看Course_ID=1000004的所有行
以下是一些示例数据:
只需在该表上使用“全选”:
557 | 1000002 | 2014-11-18
557 | 1000002 | 2009-7-6
557 | 1000004 | 2011-1-15
557 | 1000004 | 2005-9-22
557 | 1000004 | 2004-4-17
557 | 1000010 | 2014-6-10
557 | 1000010 | 2013-6-09
557 | 1000010 | 2012-6-10
使用原始查询,我得到以下结果:
557 | 1000002 | 2014-11-18
557 | 1000004 | 2011-1-15
557 | 1000010 | 2014-6-10
我只希望看到1000004没有被过滤掉:
557 | 1000002 | 2014-11-18
557 | 1000004 | 2011-1-15
557 | 1000004 | 2005-9-22
557 | 1000004 | 2004-4-17
557 | 1000010 | 2014-6-10
多谢各位
谢谢。您可以将它们从您的行编号分区中排除,并在最后合并它们
SELECT x.*
FROM (SELECT t.*, ROW_NUMBER() OVER
(PARTITION BY t.Course_ID, t.Employee_Number
ORDER BY t.Date_Completed DESC) AS rank
FROM Employee_Training t
WHERE course_id!=1000004) x
WHERE x.rank = 1
UNION ALL
SELECT t.*,1 as rank
FROM Employee_Training t
WHERE course_id=1000004