큰 SQL 쿼리의 일부로 다른 임시 테이블의 관련 항목을 저장할 임시 테이블을 만듭니다. insert
문의 select
부분은 CASE 문을 사용하여 dataSource
열의 값을 기반으로 1 또는 0으로 최종 열 (labSample
)을 채 웁니다. SSMS는 labSample
열의 dataSource
을 참조하여 잘못된 열 오류를 반환합니다. 나는 내 인생이이 오류가 발생하는 이유를 생각해 내지 못한다. 이것은 문법 오류인가 아니면 그냥 놓친 것인가? 밑줄없는 열 이름 (만 #related
테이블에 dataSource
및 labSample
열 제외) #temp_trace
테이블에서 발생하면서 SQL Server 2008 CASE 문에 잘못된 열 오류가 발생했습니다.
이하 사용되는 명명 규칙
은 열 이름 앞에 밑줄이#related
테이블에 새로운 열되어있다.
정말이 도움말에 조금 감사드립니다!
create table #related (_tr_id int, _mp_id int, _sta_id int, _tr_number_s nvarchar(20),
_tr_tstamp_ts datetime, _tr_team_s nvarchar(100), _tr_comment_s nvarchar(512),
_kld_id_medium int, _kld_id_reason int, _kld_id_typeofsmpl int, _sp_id int,
_sa_id int, _sa_depth_fl float, _fr_number_l int, dataSource nvarchar(128), labSample bit)
insert into #related (_tr_id, _mp_id, _sta_id, _tr_number_s,
_tr_tstamp_ts, _tr_team_s, _tr_comment_s,
_kld_id_medium, _kld_id_reason, _kld_id_typeofsmpl, _sp_id, _sa_id, _sa_depth_fl,
_fr_number_l, dataSource, labSample)
select
tt.tr_id as _tr_id,
tt.mp_id as _mp_id,
tt.sta_id as _sta_id,
tt.tr_number_s as _tr_number_s,
tt.tr_tstamp_ts as _tr_tstamp_ts,
tt.tr_team_s as _tr_team_s,
tt.tr_comment_s as _tr_comment_s,
tt.kld_id_medium as _kld_id_medium,
tt.kld_id_reason as _kld_id_reason,
tt.kld_id_typeofsmpl as _kld_id_typeofsmpl,
sp.sp_id as _sp_id,
sa.sa_id as _sa_id,
sa.sa_depth_fl as _sa_depth_fl,
fr.fr_number_l as _fr_number_l,
kd.kld_value_s as dataSource,
case dataSource
when 'Field' then 0
when 'Unknown' then 0
else 1
end
from #temp_trace tt
inner join spot sp on sp.tr_id = tt.tr_id
inner join sample sa on sa.sp_id = sp.sp_id
inner join fraction fr on fr.sa_id = sa.sa_id
inner join kld_data kd on kd.kld_id = fr.kld_id_datasource
where mp_id = @tr_mp_id and
sta_id = @tr_sta_id and
CAST(tr_tstamp_ts as DATE) = CAST(@tr_tstamp_ts as DATE)
감사합니다. @Mahedi. 매력처럼 일했습니다. 나는'dataSource'를 이미'# related' 테이블에있는 컬럼으로 선언했기 때문에 case 문에서 접근 할 수있을 것이라고 생각했지만 분명히 착각했습니다! –