여러 컬럼에 있는 여러 필드값을 합해서 다른 컬럼의 값과 비교해서 값을 도출할려고 쿼리를 구성했는데요.
Select a.E302FILE_NAME, (Rtrim(b.E104DOCTYPE)+Rtrim('_'+b.E104DOCNO)+Rtrim('_'+b.E104REV)+Rtrim('_'+b.E104SHT)+Rtrim('_'+b.E104ZONE)) as '기술자료'
From HE302 a, HE104 b
Where E302DOC_TYPE = 'PGM' And E302FILE_NAME like ( Select E104DOCNO FROM HAS기술자료.dbo.HE104)
오류가
서버: 메시지 512, 수준 16, 상태 1, 줄 1
하위 쿼리에서 값을 둘 이상 반환했습니다. 하위 쿼리 앞에 =, !=, <, <=, >, >= 등이 오거나 하위 쿼리가 하나의 식으로 사용된 경우에는 여러 값을 반환할 수 없습니다.
어떤 부분이 잘못된지 몰라 문의드립니다.
Comment 7
-
초짜해커
2014.01.16 10:04
-
차차리아카
2014.01.16 10:08
아.. 그렇구나. 솔직히 초보라 어떻게 해야할지는 모르지만. ㅎㅎ
그래도 문제점을 알았으니 ^^ 해결책은 한번 강구해보겠습니다. ㅋ
감사합니다.
-
초짜해커
2014.01.16 10:19
하위쿼리에서 결과를 하나만 반환해야 합니다.
만약 오로지 에러를 없에고 싶다면 TOP 1을 쓰면 해결됩니다.
그게 아니고 로직을 수정하고 싶다면 LIKE로 조인하는 방법이 있겠네요. (성능은 극악이 되겠지만...)
AND a.E302FILE_NAME LIKE b.E104DOCNO
-
차차리아카
2014.01.16 10:38
값이 여러개가 도출될 수도 있어서.. 아 그럼 Like라는 걸 사용하면 안되는거군요..
-
차차리아카
2014.01.16 13:38
Select
a.E302FILE_NAME, a.E302DOC_FILE_DATA, (Rtrim(E104DOCTYPE)+Rtrim('_'+E104DOCNO)+Rtrim('_'+E104REV)+Rtrim('_'+E104SHT)+Rtrim('_'+E104ZONE)) as '기술자료'
From
HAS_DOC관리.dbo.HE302 a, HAS기술자료.dbo.HE104 b
Where
a.E302DOC_TYPE = 'PGM' And E104DOCTYPE = 'PGM'
And Exists
(
Select
'기술자료'
FROM
HAS기술자료.dbo.HE104
Where
E104DOCTYPE = 'PGM'
)막 짜고 있는데, 해결을 못하고 있는데요. ㅠㅠ 해결책을 갈쳐주시면 안될까요?
In, any, some 이런거 다 쓰고 있는데 문제를 해결못하고 있어서요 부탁드립니다.
-
초짜해커
2014.01.16 14:16
Select a.E302FILE_NAME,(Rtrim(b.E104DOCTYPE)+Rtrim('_'+b.E104DOCNO)+Rtrim('_'+b.E104REV)+Rtrim('_'+b.E104SHT)+Rtrim('_'+b.E104ZONE)) as '기술자료'From HE302 a inner join HE104 b on a.E302FILE_NAME = b.E104DOCNOWhere a.E302DOC_TYPE = 'PGM' and b.E104DOCTYPE = 'PGM' -
차차리아카
2014.01.16 15:19
^^ 해커님이 주신 쿼리문을 가지고 참조하여 꼭 성공하도록 하겠습니다.
감사합니다.ㅎㅎ
like ( Select E104DOCNO FROM HAS기술자료.dbo.HE104) 에서 하위쿼리가 값을 둘 이상 반환했군요.
like는 오직 한개의 값과만 비교가 가능합니다.