내부 조인을 사용하여 두 테이블에서 일치하는 행을 얻으려는 경우 모두 일치하면 0
을 1
으로 설정하십시오. 마지막으로 변수 @duplicate_counts
에 1
또는 0
을 설정하고 싶습니다.내부 조인을 사용하여 case 문 t-sql을 사용하여 변수 선택 일치하는 행을 설정하십시오.
샘플 데이터 ClaimsTable
은 (모두, ClaimsTable
및 #tempTable
동일한 열이)
Time Terminal_ID Count
------------------------------------
2017-10-19 06:03:00 1 5
2017-10-19 06:04:00 1 2
2017-10-19 06:05:00 1 2
2017-10-19 06:06:00 1 2
2017-10-19 06:03:00 9 2
2017-10-19 06:04:00 9 3
2017-10-19 06:05:00 9 2
2017-10-19 06:06:00 9 3
2017-10-19 06:06:00 9 3
#tempTable
,
Time Terminal_ID Count
------------------------------------
2017-10-19 06:03:00 1 5
2017-10-19 06:04:00 1 2
2017-10-19 06:05:00 1 2
2017-10-19 06:06:00 1 2
2017-10-19 06:03:00 9 2
2017-10-19 06:04:00 9 3
2017-10-19 06:05:00 9 2
2017-10-19 06:06:00 9 3
지금, 나는 innerjoin
를 사용하여 두 테이블의 일치하는 행을 확인하시기 바랍니다. 일치하는 행이있는 경우 변수 @duplicate_counts
을 0
으로 설정하고 싶지 않다면 @duplicate_counts
을 1
으로 설정하고 싶습니다. 이 경우 ClaimsTables
의 마지막 레코드가 중복됩니다.
내가하고있는 일은 중복이 없는지 확인하는 것입니다. 나는이 같은 CASE 문을 시도
는
declare @duplicate_counts int
set @duplicate_counts =(select
CASE WHEN
(
select count(*)
from ClaimsTable
inner join #temptable
on #temptable.[time] = ClaimsTable.[time]
and #temptable.terminal_id = ClaimsTable. terminal_id
)
THEN 0
ELSE 1
END
select @duplicate_counts
이, 문은 나에게 오류 준 :
An expression of non-boolean type specified in a context where a condition is expected, near 'then'.
이 후,이 같은 if
문을 다하겠습니다을
if @duplicate_counts = 1
begin
--insert duplicates into bin table
insert into BinTable
...
이렇게하면 ClaimsTable
의 마지막 레코드가에 삽입됩니다..
case 문에서 1과 일치하는 경우 어떻게 0으로 설정할 수 있습니까?
내가 혼란 스러워요합니다. 카운트 또는 행 단위 플래그를 원하십니까? 샘플 데이터와 원하는 결과가 도움이 될 것입니다. –
@ GordonLinoff 일치하는 값이 있으면 두 테이블을 검사합니다. 따라서 행 단위 플래그입니다. 내가 원하는 샘플 데이터와 출력을 게시 할 것입니다! –
오류 메시지가 꽤 분명 나는 생각 ... 귀하의 SELECT COUNT (*) 문이 true/false가 아니라 숫자를 반환합니다. 당신이 정말로하고 싶은게 뭐지? – pmbAustin