我的表设置了一个名为'Month'的列。 我在表上运行一个sql insert语句,并获得受影响的行数。
有没有办法让每个“月”值的行受影响?
如果我的表是“月”列上的分区,那有帮助吗?
我的sql标准如下:
插入'TargetTable' (Column1,Column2,Months,Column4,....) SELECT column_names 来自SourceTable;
我正在使用.Net的SqlClient中的SqlCommand将sql传递给SQL服务器。
答案 0 :(得分:1)
单个insert
语句返回受影响的单行计数。您为'month'的每个值执行单独的插入,因此12个insert语句而不是1.这会产生一些性能影响。
或者,您可以加载要插入到临时表中的行并执行插入,然后报告事物,这些内容如下:
create table #work
( month int not null ,
primary_key_of_real_table int not null ,
)
insert #work
select t.month , t.primary_key_column
from source_table t
where -- your filter criteria here
insert target_table
( ... column list ... )
select ... column list ...
from #work t
join source_table x on x.primary_key_column =t.primary_key_of_real_table
select m.month , cnt = sum(case when t.month is null then 1 else 0 end)
from ( select month = 1 union all
select month = 2 union all
...
select month = 12
) m
left join #work t on t.month = m.month
group by t.month
order by t.month