2014-02-26 4 views
0

내 표는 '달'이라는 이름의 열 중 하나에 설정되어 을 삽입 문에 의해 영향을받는 행의 상세한 번호를 가져, 그리고 영향을받는 행의 수를 얻을.나는 테이블에 SQL INSERT 문을 실행합니다.

인가 이 "월"의 각 값에 대해 영향을받는 행의 수를 얻을 수있는 방법

내 표는 "월"컬럼에 파티션 일 경우

이 할 수있는 도움은 하나의 표준이 좋아

내 SQL은 다음? :

INSERT INTO 'TargetTable' (Column1, Column2, Months, Column4, ....) SELECT column_names FROM SourceTable;

.Net의 SqlClient에서 SqlCommand를 사용하여 SQL을 SQL 서버로 전달합니다.

+1

당신의 SQL을 포함 해 주시기 바랍니다. –

답변

1

단일 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 
+0

감사합니다. 성능상의 이유로 삽입 문을 그룹화 했으므로 동일한 문제로 인해이 옵션을 사용할 수 없습니다. – daniely

관련 문제