2014-10-07 179 views
0

我必须在几个工作表上做很多数据验证。下面显示了我面临的一个常见问题。我有4列,行号在整个组上。在Case语句中删除并替换

实施例1

我想删除行2和4作为访问“第一”优先。

实施例2

我想保持一排如但改变行2 3 4为“第二”。任何人都可以建议一个快速和干净的方式来做到这一点我尝试过使用大小写并替换(使用网站上的一些示例),但我对结果并不满意。提前

感谢

例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 
+0

这是Excel或Access或其他? – jpw 2014-10-07 13:59:55

+0

您的数据库是? – Mihai 2014-10-07 13:59:55

+0

你的问题是什么? – 2014-10-07 13:59:56

回答

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函数?

+0

@Kello - 在示例1的问题陈述中,您表明您想要保留第3行,但是您对Bobcat解决方案的评论推断出删除第3行并保留第2行和第4行的DELETE语句。 – Forty3 2014-10-07 14:55:05

+0

感谢您的回复。这是我一直想要的更新。我对你的陈述进行了修饰,最终得到了我想要的。这不是完美的,但它会做! – Kello 2014-10-07 16:54:41

0

你是最好的使用 “如果” 功能这一问题。

例如:

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

从MyTable中选择*从MyTable中删除其中Visit ='1st'和Row> 1这是我为Example1尝试过的一种陈述。任何人都可以改进这个来获得理想的效果吗? – Kello 2014-10-07 14:38:09