아래 에러는 subquery 에서 돌아오는 값이 둘이상이기 때문에 발생하는 에러입니다. 그 subquery 부분만 때어서 실행시켜 보시기 바랍니다.
value=(subquery....)
이런 형식의 subquery 는 당연히 그 결과를 하나만 돌려줘야만이 에러가 발생하지 않습니다. (당연하겠지요. 그 값을 받을 변수가 하나 밖에 없으니...) 다시 query 를 검증해 보시기 바랍니다.
-- 박재범 님이 쓰신 글:
>> 원본문을 올립니다.
>> 부탁드립니다.
>> 1>update desc_mileage set mileage_value = (select b.money * case when b.user_divide = \'1\' then a.poffer_per when b.user_divide = \'0\' then a.goffer_per end from company_info a, desc_mileage b where a.company_name = b.company_name and a.service_name = b.service_name and (b.mileage_value = 0 or b.mileage_value = null) and b.id = \'jebuempak\'), apply_date = (select convert(char(8), dateadd(dd, convert(int,a.apply_date), b.m_date),112) from desc_mileage b, company_info a where a.company_name = b.company_name and a.service_name = b.service_name and b.id = \'jebuempak\') where id = \'jebuempak\' and m_date = \'20010830\'
>> 2> go
>> Msg 512, Level 16, State 1:
>> Line 1:
>> Subquery returned more than 1 value. This is illegal when the subquery follows
>> =, !=, <, <= , >, >=, or when the subquery is used as an expression.
>> Command has been aborted.
>> (0 rows affected)
>> 1>
>> 위의 apply_date는 type이 char(8)이고요
>> mileage_value의 type은 numeric(9)입니다.
|