ORACLE SQL 간단한 질문 하나 해봅니다. 0 7 890

by 에즈레인보우 [Oracle 기초] [2015.01.22 11:48:05]


안녕하세요~! 항상 도움 주셔서 감사드립니다.

 

AMT = (SELECT A.AMT FROM TEST1 A

                                    WHERE A.SEQ = '1') /

            ((SELECT A.AMT FROM TEST2 A

                                    WHERE A.SEQ = '2') +

             (SELECT A.AMT FROM TEST3 A

                                    WHERE A.SEQ = '3'))

 AMT = (400 / (200 + 200)) 숫자로 표현하면 요렇게 되구요.

각각의 SELECT문에서 값은 하나만 반환이 되는데, 수식이 정상적으로 동작을 안합니다.

제가 틀리게 짠거 같은데, 방법 좀 부탁드리겠습니다.

 

by 마농 [2015.01.22 13:20:11]

(AMT = 수식) 이라고 보여주셨는데요?
이게 다인가요? 이게 다라면 당연히 에러나겠구요.
아니면 일부만 발췌한건가요?
일부만 발췌한거라면 SQL 의 어느부분에 어떻게 쓰인건가요?


by 에즈레인보우 [2015.01.22 13:26:48]

IF 조건 THEN

UPDATE TEST_TABLE

SET AMT = (SELECT A.AMT FROM TEST1 A

                                    WHERE A.SEQ = '1') /

            ((SELECT A.AMT FROM TEST2 A

                                    WHERE A.SEQ = '2') +

             (SELECT A.AMT FROM TEST3 A

                                    WHERE A.SEQ = '3'))

 

요렇게 사용할려구 합니다!


by 마농 [2015.01.22 13:42:35]

네.. 그래서요?

뭐가 어떻게 안된다는 건가요?

If 문은 또 뭔가요? 또 일부만 발췌한건가요?

질문이 구체적이지 않습니다.

그냥 "안되요" "뭐가 문제죠" 식의 질문에는 답을 드릴수가 없습니다.

전후 사정이 정확하게 기술이 되고, 안된다면 뭐가 안되는건지?

원하는게 있다면 정확하게 표현해서 질문을 해주셔야죠.


by jkson [2015.01.22 13:37:11]

TEST_TABLE 에 AMT의 모든 값을 동일하게 업데이트 하나요?

그게 아니라면 TEST_TABLE의 특정 컬럼값에 따라 TEST1, TEST2, TEST3테이블에서 값을 가져와 업데이트하는 것일 것 같은데..

 

UPDATE TEST_TABLE B

SET AMT = (SELECT A.AMT FROM TEST1 A

                                    WHERE A.SEQ = B.컬럼) /

            ((SELECT A.AMT FROM TEST2 A

                                    WHERE A.SEQ = B.컬럼) +

             (SELECT A.AMT FROM TEST3 A

                                    WHERE A.SEQ = B.컬럼))

 

이런 형태 아닐런지요?


by jkson [2015.01.22 13:52:00]

마농님 말씀처럼 오류가 나는 것인지, 동작은 하는데 결과 값이 맞지 않는 것인지, 그렇다면 각각 쿼리문 select 결과는 무엇인지 TEST_TABLE의 amt 값에는 어떤 값이 업데이트되어야 하는지 상세하게 적어주셔야 답변이 쉬워요^^ 마농님 달아주시는 다른 답변들 보시면 아시겠지만 조건만 정확하게 적어주시면 누구보다 자세하게 답변 달아주시니까 자세히 설명해주세요. 자신은 내용을 알고 있으니 대충 이렇다 식으로 적지만 모르는 사람 입장에서는 그렇게 적으놓으면 뭘 원하는지 알기가 무척 어렵습니다.


by 에즈레인보우 [2015.01.22 17:26:31]

제가 아직 실력이 부족해서 질문하는데도 어려움이 있네요.

정리를 다시 해서 구체적으로 질문드릴께요~ 항상 감사힙니다!!!


by 이창훈 [2015.01.22 18:29:11]
L_A := SELECT A.AMT FROM TEST1 A WHERE A.SEQ = '1';
L_B := SELECT A.AMT FROM TEST2 A WHERE A.SEQ = '2';
L_C := SELECT A.AMT FROM TEST3 A WHERE A.SEQ = '3';

IF L_A IS NULL THEN 예외처리 END;
IF L_B IS NULL THEN 예외처리 END;
IF L_C IS NULL THEN 예외처리 END;

IF 조건 THEN
UPDATE TEST_TABLE
SET AMT = L_A / (L_B + L_C);

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입