在SQL Server中查找特殊副本
我在表格中有以下数据在SQL Server中查找特殊副本,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在表格中有以下数据 Cust_Code ItemNo --------- ------ XYZ 150 XYZ 100 ABC 100 ABC 200 DEF 100 etc 对于给定的一对旧cust\u code和新cust\u code,我希望使用以下规则选择(和删除)重复项:如果新cust\u代码与旧代码具有相同的ItemNo,则必须选择/删除旧代码 示例:如果旧客
Cust_Code ItemNo
--------- ------
XYZ 150
XYZ 100
ABC 100
ABC 200
DEF 100
etc
对于给定的一对旧cust\u code
和新cust\u code
,我希望使用以下规则选择(和删除)重复项:如果新cust\u代码与旧代码具有相同的ItemNo,则必须选择/删除旧代码
示例:如果旧客户代码='XYZ'和新客户代码='ABC',则必须删除表的第二行(XYZ 100),因为已经存在具有相同值(100)的ABC条目。
我希望我足够清楚
如何使用T-SQL查询实现这一点
我亲自在查询中声明:
DECLARE @old nvarchar(100) = 'XYZ';
DECLARE @new nvarchar(100) = 'ABC';
谢谢用这个:
with new as (
select cust_code
, itemno
from tab
where cust_code = @new
)
delete old
from tab old
join new
on old.itemno = new.itemno
where old.cust_code = @old
下面是一种将逻辑放入
where
子句的方法:
delete from table t
where t.code = @OLD and
exists (select 1 from table t2 where t2.code = @NEW and t2.itemNo = t.itemNo);
如何区分新旧代码?您的描述使用了表中未出现的事物的名称。第一:到目前为止您做了什么?第二:XYZ和ABC各有两个项目代码。如何处理?