안녕하세요
몇일간 고민하다가 도저히 안되겠길래 고수님들께 도움을 청합니다.
휴대폰 문자메시지를 전송하는 테이블인데....
A테이블은 문자메시지 보낼 내용, B테이블은 수신대상자테이블 입니다.
문자를 보낼때 A테이블에 문자메시지 내용을 입력한 후, B테이블에 수신자 만큼 휴대폰 번호를 삽입해서 보내는 구조인데
B테이블의 CUR_STATE항목에 전송결과값이 업데이트 됩니다.
제가 하고자 하는 것은 전송 결과를 나타내고자 하는데,
A테이블 목록을 표시하고, 각 목록별 전송성공(CUR_STATE=3), 전송실패(CUR_STATE=2), 전송중(CUR_STATE=1) 값들을 COUNT해서 표시하고자 하는데요....
그림파일로 한번 정리를 해보았습니다.
참고하세요..
create table table_contents
(
req_send_date varchar(100),
pack_uniquekey tinyint,
msg varchar(100)
);
create table table_log
(
msg_seq int identity(1,1),
pack_uniquekey tinyint,
cur_state tinyint,
phone_num varchar(20),
call_back varchar(20)
);
insert into table_contents(req_send_date, pack_uniquekey,msg)
select '20220801172521', 2, '메시지테스트' union all
select '20220801172524', 3, '메시지 전송 테스트' union all
select '20220801172529', 4, '안녕하세요 000입니다' union all
select '20220801172537', 5, '공지사항입니다.'
insert into table_log(pack_uniquekey, cur_state, phone_num, call_back)
select 2, 3, '01', '028402121' union all
select 2, 3, '02', '028402121' union all
select 3, 0, '03', '028402121' union all
select 3, 3, '04', '028402121' union all
select 3, 3, '05', '028402121' union all
select 4, 3, '06', '028402121' union all
select 4, 3, '07', '028402121' union all
select 5, 3, '08', '028402121' union all
select 5, 3, '09', '028402121' union all
select 5, 3, '10', '028402121' union all
select 5, 1, '11', '028402121' union all
select 5, 1, '12', '028402121'
select
a.msg,
a.req_send_date,
sum(1) as 대상자,
sum(iif(b.cur_state = 0, 1, 0)) as 전송중,
sum(iif(b.cur_state = 1, 1, 0)) as 전송실패,
sum(iif(b.cur_state = 3, 1, 0)) as 전송완료
from table_contents a
inner join table_log b
on a.pack_uniquekey = b.pack_uniquekey
group by a.msg,
a.req_send_date