database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 616 게시물 읽기
No. 616
as400 Query 문장좀 확인부탁드려요!!ㅜㅜ
작성자
초보자
작성일
2004-04-12 13:29ⓒ
2004-04-12 13:30ⓜ
조회수
7,440

이 문장이 맞는지 확인좀 부탁드릴게요!!~

제가 DB2를 처음 써보는 초보자라서 ㅠㅠ

품목구분에 따라 출력해야 할 이름이 각각 이라서

이 문장을 실행시 [SQL0104] Token B was not valid tokens :+)-

이러한 에러메세지가 나옵니다.

혹시 Alias준것땜에 그런지?

고수님의 조언을 좀 부탁드립니다.

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒                                                                                                                                                        

SELECT 일련번호
         ,  순번
        , CASE 품목구분
           WHEN '1' THEN      --1 일때
             (SELECT B.제품명 AS PRO_NAME    
                   , B.재질명 AS JEAJIL_NAME       
                   , B.규격 AS KUKEUK_NAME       
                   , C.완료공정 AS GONG_NAME    
                   , D.벨브이름 AS VELVE_NAME    
              FROM DBF2LIB.거래표 A
                    LEFT OUTER JOIN DBF1LIB.부품 B ON SUBSTR(A.품목번호,1,8) = CHAR(B.부품번호)
                    LEFT OUTER JOIN DBF1LIB.코드마스터 C ON C.코드1='J' AND C.코드2=A.완료공정
                    LEFT OUTER JOIN DBF1LIB.벨브 D ON D.벨브코드=SUBSTR(A.품목번호,1,4)
              WHERE A.일련번호=00000
              )
            WHEN '2' THEN    --2 일때
              ( SELECT B.제품명 AS PRO_NAME           --제품명
                     , B.재질명 AS JEAJIL_NAME        --재질명
                     , C.규격 AS KUKEUK_NAME        --규격
                     , D.선택사양 AS OPTION_NAME        --선택사양
                     , E.완료공정 AS GONG_NAME          --완료공정
                FROM DBF2LIB.거래표 A
                     LEFT OUTER JOIN DBF1LIB.제품 B ON A.품목번호 = B.제품번호
                     LEFT OUTER JOIN DBF1LIB.재질 C ON A.재질번호 = C.재질번호
                     LEFT OUTER JOIN DBF1LIB.선택사양 D ON A.선택사양코드 = D.선택사양코드
                     LEFT OUTER JOIN DBF1LIB.코드마스터 E ON E.코드1 ='J' AND E.코드2 = A.완료공정
                WHERE A.일련번호=00000
                )
  
  ~~~ 중간 생략 ~~~
                 END AS A

      , A.PRO_NAME
      , A.JEAJIL_NAME  
      , A.KUKEUK_NAME
      , A.OPTION_NAME
      , A.GONG_NAME 
      , A.VELVE_NAME 
     , 완료공정
     , 수량
     , 단가
     , 금액
 FROM DBF2LIB.거래표
 WHERE 일련번호=00000

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒                                                                                                                                                        

이 글에 대한 댓글이 총 3건 있습니다.

윗 글 작성한 초보자입니다.

여기 CASE문장안에 SUB SELECT문을 사용했는데!!

혹! 그렇게 작성하면 안되는 것인가요?

어것땜에 머리가 빠지고 있습다!!ㅜㅜ

아시는 님께서는 답변좀 꼬~옥 부탁드립니다.

질문자님이 2004-04-13 15:51에 작성한 댓글입니다. Edit

CASE문은 IF의 개념으로 쓰는 것으로 알고 있습니다..

따라서 WHEN 안에서 SELECT를 쓰면 안되겠죠..

제가 생각하기론 조건에 해당하는 집합을 먼저 SELECT하고 그것을

테이블 취급을 해서 다시 한 번 SELECT를 해야할 것 같습니다.

이때 CASE WHEN문을 사용해야겠죠..

 

SELECT H.일련번호
  ~~~ 중간 생략 ~~~
     , CASE H.품목구분
       WHEN '1' THEN      --1 일때
            H.BOO_PRO_NAME
       WHEN '2' THEN      --2 일때
            H.JAE_PRO_NAME
       END  AS  PRO_NAME
     , CASE H.품목구분
       WHEN '1' THEN      --1 일때
            H.BOO_JEAJIL_NAME
       WHEN '2' THEN      --2 일때
            H.JAE_JEAJIL_NAME
       END  AS  JEAJIL_NAME
  ~~~ 중간 생략 ~~~      
FROM (
SELECT A.일련번호
     , A.순번
     , B.제품명         AS BOO_PRO_NAME    
     , B.재질명         AS BOO_JEAJIL_NAME       
     , B.규격           AS BOO_KUKEUK_NAME       
     , C.완료공정       AS GONG_NAME    
     , D.벨브이름       AS VELVE_NAME 
     , E.제품명         AS JAE_PRO_NAME           --제품명
     , E.재질명         AS JAE_JEAJIL_NAME        --재질명
     , F.규격           AS JAE_KUKEUK_NAME        --규격
     , G.선택사양       AS OPTION_NAME        --선택사양
     , A.완료공정       AS GONG_NAME          --완료공정
     , A.PRO_NAME
     , A.JEAJIL_NAME  
     , A.KUKEUK_NAME
     , A.OPTION_NAME
     , A.GONG_NAME 
     , A.VELVE_NAME 
     , A.완료공정
     , A.수량
     , A.단가
     , A.금액
     , A.품목구분
  FROM DBF2LIB.거래표 A
       LEFT OUTER JOIN DBF1LIB.부품 B ON SUBSTR(A.품목번호,1,8) = CHAR(B.부품번호)
       LEFT OUTER JOIN DBF1LIB.코드마스터 C ON C.코드1='J' AND C.코드2=A.완료공정
       LEFT OUTER JOIN DBF1LIB.벨브 D ON D.벨브코드=SUBSTR(A.품목번호,1,4)
       LEFT OUTER JOIN DBF1LIB.제품 E ON A.품목번호 = E.제품번호
       LEFT OUTER JOIN DBF1LIB.재질 F ON A.재질번호 = F.재질번호
       LEFT OUTER JOIN DBF1LIB.선택사양 G ON A.선택사양코드 = G.선택사양코드
 WHERE 일련번호=00000
) AS H

;

 

이런 식으로요....

 

이진행(Javarang)님이 2004-04-14 13:38에 작성한 댓글입니다.

답변달아주신 님!!~
정말 감사합니다.
님께서 조언해주신데루 실행해보겠습니다.

이걸가지구 몇일을 고생했는지?ㅠㅠ

복 받으실겁니다

초보우미니님이 2004-04-14 18:25에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
619가르쳐주세여... [1]
허접왕초보
2004-04-21
5441
618user등록되는 곳이 어디인지?ㅠㅠ
초보우미니
2004-04-14
5372
617전체 테이블 조회 SQL문 [1]
초보
2004-04-12
6795
616as400 Query 문장좀 확인부탁드려요!!ㅜㅜ [3]
초보자
2004-04-12
7440
615DB2 에서 sql문이 저장(로깅)이 가능한가요? [1]
저장
2004-04-12
5302
614[질문]MSSQL 에서 DB로 ODBC 연결이 가능한지요?
이정훈
2004-04-07
5322
613DB2에 ODBC로 한글을 집어 넣는데 에러가 납니다. [1]
구리구리
2004-04-06
7309
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다