如何根据条件选择更新的数据

时间:2017-09-15 13:38:51

标签: sql-server

我想知道如何实现以下方案

我每个月都会得到一些数据。例如下面,如果项目代码重复自己,那么任务就是选择项目代码重复的新行数据,在这种情况下它是1111,以及1112的唯一项目代码。

请让我知道如何实现相同的目标

Source Table:
ProjectCode Header1 Header2  Header3    Header4
1111       NewYork  Vivek    Khanna     Not Assigned
1112       Autralia Srinivas Rajole     Assigned
1111       NewYork  Parul    Sharma     Assigned

Desired result:
ProjectCode Header1 Header2     Header3 Header4
1112    Autralia    Srinivas    Rajole  Assigned
1111    NewYork     Parul       Sharma  Assigned

2 个答案:

答案 0 :(得分:0)

不太清楚您正在寻找什么,因为您还没有为具有相同项目代码的行指定返回一行而不是另一行的条件。如果您要查找最新条目,则需要添加自动增量或日期时间变量列。然后尝试下面的内容:

SELECT * FROM SourceTable WHERE ID IN (SELECT MAX(ID) FROM SourceTable GROUP BY ProjectCode)

答案 1 :(得分:0)

由于您声明自己有一个自动递增的列,因此您可以使用row_number()

在此示例中,我们基于YourAutoIncrementColumn为每个ProjectCode应用一个订单。每个ProjectCode具有最高YourAutoIncrementColumn的行将具有数字1。

with cte as(
    select
        ProjectCode
        ,Header1
        ,Header2
        ,Header3
        ,Header4
        ,RN = row_number() over (partition by ProjectCode order by YourAutoIncrementColumn desc)
    from
        sourceTable)

select
    ProjectCode
    ,Header1
    ,Header2
    ,Header3
    ,Header4
from
    cte
where
    RN = 1