create proc proc_DTTest as declare @Dt1CostName nvarchar(100),@Dt2CostName nvarchar(100),@i int set @i = 100 while(@i < 0) begin --得到Dt1 的 CostName select top 1 @Dt1CostName = CostName from Dt1 while Dt1ID not in ( select top (1*(@i - 1) Dt1ID from Dt1) ) --得到Dt2 的 CostName select top 1 @Dt2CostName = CostName from Dt2 while Dt2ID not in ( select top (1*(@i - 1) Dt1ID from Dt2) ) if(@Dt1CostName = @Dt2CostName) begin --这里做你想要做的事儿 print '这里做你想要做的事儿' end else begin --这里做你想要做的事儿 print '这里做你想要做的事儿' end set @i = @i - 1 end 我按照我的意思写的端存储过程,不知道是不是你想要的答案。手写的,可能有错。
是不是比如DT1 CostName列里面没有"语录" 新增一行,CostType 的值为0
DT2同理。。猜猜猜。
是不是比如DT1 CostName列里面没有"语录" 新增一行,CostType 的值为0
DT2同理。。猜猜猜。
对 就是 要 保证 这两个 dt 里的值 是一样的
是不是比如DT1 CostName列里面没有"语录" 新增一行,CostType 的值为0
DT2同理。。猜猜猜。
对 就是 要 保证 这两个 dt 里的值 是一样的最简单不就是判断2个相差什么吗?新增一行,设置值就可以了。。
你想表达什么?
create proc proc_DTTest
as
declare @Dt1CostName nvarchar(100),@Dt2CostName nvarchar(100),@i int
set @i = 100
while(@i < 0)
begin
--得到Dt1 的 CostName
select top 1 @Dt1CostName = CostName from Dt1 while Dt1ID not in
(
select top (1*(@i - 1) Dt1ID from Dt1)
)
--得到Dt2 的 CostName
select top 1 @Dt2CostName = CostName from Dt2 while Dt2ID not in
(
select top (1*(@i - 1) Dt1ID from Dt2)
)
if(@Dt1CostName = @Dt2CostName)
begin
--这里做你想要做的事儿
print '这里做你想要做的事儿'
end
else
begin
--这里做你想要做的事儿
print '这里做你想要做的事儿'
end
set @i = @i - 1
end
我按照我的意思写的端存储过程,不知道是不是你想要的答案。手写的,可能有错。
你只看 我给出 的 数据 就 行了 应该 能看懂
是用啥代码去实现? SQL还是C#?
写下C#伪代码:dt newdt2,newdt1
foreach(var item in dt1)
{
if(!dt2.find(l=>l.CostName ==item.CostName ))
{
newdt2.add(item);
}
}
同理处理newdt1
然后
dt1.union(newdt1);//合并新增的
dt2.union(newdt2);//合并新增的
}
先得到这俩个表customname的差值,intersect方法。
然后分别插入到表a和表b中。
{
DataTable dt=new System.Data.DataTable();
dt.Columns.Add("CostName");
dt.Columns.Add("CostType");
DataTable dt1 = dt.Clone();
DataTable dt2 = dt.Clone();
DataTable newdt2 = dt.Clone();
DataTable newdt1 = dt.Clone();
dt1.Rows.Add("打单费", 0);
dt1.Rows.Add("语录", 0);
dt1.Rows.Add("港杂", 0);
dt2.Rows.Add("语录", 1);
dt2.Rows.Add("商检", 1);
///处理在dt1里面存在 dt2里面不存在的
foreach (DataRow item in dt1.Rows)
{ var query = dt2.AsEnumerable().Where(A => A.Field<string>("CostName").Equals(item[0].ToString())); //linq to data 查询CostName是不是已经存在
if (query.Count() <1)
{
newdt2.Rows.Add(item[0].ToString(), 0);
} }
///处理在dt2里面存在 dt1里面不存在的
foreach (DataRow item in dt2.Rows)
{ var query = dt1.AsEnumerable().Where(A => A.Field<string>("CostName").Equals(item[0].ToString()));
if (query.Count() < 1)
{
newdt1.Rows.Add(item[0].ToString(), 0);
} }
dt1.Merge(newdt1);
dt2.Merge(newdt2);
Console.ReadLine();
}
var query = dt1.AsEnumerable().Where(A => A.Field<string>("CostName").Equals(item[0].ToString()));
感谢 各位