在Case语句中删除和替换

时间:2014-10-07 13:57:14

标签: sql

我必须在几个工作表上进行大量数据验证。我面临的一个常见问题如下所示。我有4列,在该组上有一个行号。

示例1

我想删除第2行和第4行,因为访问'1st'优先。

示例2

我想保留第一行,但将第2行3 4行更改为“第2行”。任何人都可以提出一个快速而干净的方法来做到这一点我尝试过使用case并替换(使用网站上的一些示例),但我对结果不太满意。

先谢谢

示例1

Row     ID     Date           Visit
 1       A     2014-04-10     1st
 2       A     2014-04-10     2nd
 3       A     2014-04-17     1st
 4       A     2014-04-17     2nd

示例2

Row     ID     Date           Visit
 1       A     2014-04-10     1st
 2       A     2014-04-10     1st
 3       A     2014-04-17     1st
 4       A     2014-04-17     1st

2 个答案:

答案 0 :(得分:0)

你最好使用"如果"解决这个问题。

例如:

   If (select COUNT(*) from table where criteria) > 1
    drop delete from
    where criteria

答案 1 :(得分:0)

对于第一个例子:

DELETE t FROM [table] t WHERE t.[Visit] = '2nd'

和第二个

UPDATE t
   SET [Visit] = CASE [Row] WHEN 1 THEN '1st'
                            ELSE '2nd'
                 END
  FROM [table] t

或者,当你说"行号"你实际上在SQL中使用ROW_NUMBER函数吗?