Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 条件分割_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 条件分割

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

我有一个表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
        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