create table 전체월(
고객코드 varchar(255),
월1 varchar(50),
월2 varchar(50),
월3 varchar(50),
월4 varchar(50),
월5 varchar(50),
월6 varchar(50),
월7 varchar(50),
월8 varchar(50),
월9 varchar(50),
월10 varchar(50),
월11 varchar(50),
월12 varchar(50)
)
create table 월1 (
고객코드 varchar(255),
월1 varchar(50)
)
create table 월2 (
고객코드 varchar(255),
월2 varchar(50)
)
create table 월3 (
고객코드 varchar(255),
월3 varchar(50)
)
.........
create table 월12 (
고객코드 varchar(255),
월12 varchar(50)
)
이렇게 테이블을 만들고
전체월 테이블에는 우선 distinct옵션을 줘서 고객코드를 정렬시켜 집어 넣었습니다.
그리고 각 월별 테이블에는 중복제거를 하지 않고, 고객코드와 이에 해당하는 count수가 들어갑니다.
그래서 단순히 전체월 테이블과 해당 월 테이블을 조인 시켜서
고객 코드별_월별_갯수 를 만들어 내려고 하는데 문제가 생긴 부분이
여러 행에서 가져 온 값을 여러행에 집어넣으려니 잘 되질 않습니다.
그래서 궁금한 것이
1.여러행에서 가져온 값을 여러행으로 업데이트 시키려면 IN연산자를 쓰면 안되는 것인가요?
2.인서트를 시키려니 행 아랫쪽 긑에 추가가 되는데 이를 해당 코드에 해당하는 곳에 넣으려면 어떻게 해야하는건가요?
아래는 해당 쿼리와 오류입니다.
update A
set 월1 = (select COUNT(B.CUST_TYPE)
from B inner join C
on B.고객코드= C.[열 1]
where SUBSTRING(기간, 1, 6) = '201005'
and B.SANG_ID = C.[열 4]
and B.신규_갱신구분 = '신규'
group by B.CUST_TYPE)
where 고객코드 IN (select B.CUST_TYPE
from B inner join C
on B.고객코드 = C.[열 1]
where SUBSTRING(B.기간, 1, 6) = '201005'
and B.SANG_ID = C.[열 4]
and B.신규_갱신구분 = '신규'
group by B.CUST_TYPE)
메시지 512, 수준 16, 상태 1, 줄 1
하위 쿼리에서 값을 둘 이상 반환했습니다. 하위 쿼리 앞에 =, !=, <, <=, >, >= 등이 오거나 하위 쿼리가 하나의 식으로 사용된 경우에는 여러 값을 반환할 수 없습니다.
문이 종료되었습니다. |