我的表设置有一个名为"Month"的列。我在表上运行一个sql insert语句,并获取受影响的行数。
有没有办法获得每个"Month"值所影响的行数?
如果我的表是"月"列上的分区,这有帮助吗?
我的sql是一个标准的sql,如下所示:
INSERT INTO"TargetTable"(第1列,第2列,月,第4列,……)选择列名称FROM源表;
我正在使用中的SqlCommand。Net的SqlClient将sql传递到sql服务器。
单个insert
语句返回单个受影响的行数。您为每个"month"值执行一个单独的插入,因此插入12条语句而不是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