저는 Oracle Database 12c Enterprise Edition을 사용하고 있습니다.BETWEEN 연산자를 사용하여 두 SELECT 하위 쿼리를 비교하는 방법은 무엇입니까?
표는 다음과 같습니다 http://i.stack.imgur.com/gL2L6.jpg
이 표는 자신의 고유 한 ID (WKN), 자신의 시작 가격 (시작), 최대 가격 (호크), 낮은 가격으로 다른 주식의 주가를 (보여줍니다 Tief)와 그들의 마감 가격 (Schluss)을 날짜별로 (Datum) 표시합니다. 이제 SQL에서 90 일 선을 직접 계산하려고합니다. 90 일 이내에 지난 90 일 동안 종가의 산술 평균을 계산하여 매일 계산합니다.
나는 다음과 같은 SQL 문이를 계산하기 위해 노력 : http://i.stack.imgur.com/XjYXf.jpg모두 첫 번째 하위 쿼리 :
SELECT SUM(SCHLUSSPREIS)/90 AS TAGESLINIE FROM KURS WHERE DATUM BETWEEN
(SELECT DATUM FROM KURS WHERE WKN = 2 AND DATUM BETWEEN
(SELECT MAX(DATUM) - 179 FROM KURS) AND
(SELECT MAX(DATUM) - 90 FROM KURS) ORDER BY DATUM ASC)
AND (SELECT DATUM FROM KURS WHERE WKN = 2 AND DATUM BETWEEN
(SELECT MAX(DATUM) - 89 FROM KURS) AND
(SELECT MAX(DATUM) FROM KURS) ORDER BY DATUM ASC)
;
당신이 혼란 문의 더 나은 개요를 제공하기 위해, 나는 다음과 같은 구조를 만들어 ...
(SELECT DATUM FROM KURS WHERE WKN = 2 AND DATUM BETWEEN
(SELECT MAX(DATUM) - 179 FROM KURS) AND
(SELECT MAX(DATUM) - 90 FROM KURS) ORDER BY DATUM ASC)
... 및 제 부질 ...
(SELECT DATUM FROM KURS WHERE WKN = 2 AND DATUM BETWEEN
(SELECT MAX(DATUM) - 89 FROM KURS) AND
(SELECT MAX(DATUM) FROM KURS) ORDER BY DATUM ASC)
... 같은 기간 (90)의 목록을 반환합니다.
첫 번째 하위 쿼리 목록에서 첫 번째 날짜는 두 번째 하위 쿼리 목록에 속하며 첫 번째 하위 쿼리 목록의 두 번째 날짜는 두 번째 하위 쿼리 목록의 두 번째 날짜에 속하며, 등 (구성표 도형). 이제는 내 SQL 문이 각 기간 (첫 번째 날짜 (목록 1)부터 첫 번째 날짜 (목록 2)까지)의 모든 마감 가격을 합한 다음 90으로 나누어 산술 평균을 구하고 두 목록 비어 있습니다.
ERROR at line 1:
ORA-00907: missing right parenthesis
또는
ERROR at line 1:
ORA-01427: single row subquery returns more than one row
어떤 생각이 어떻게 SQL이 직접 같은 것을 할 : 나는 이것을 실행하면
그러나, 나는 다음과 같은 오류 메시지가?
도움이 감사합니다. - 감사합니다! :-)
연구를'JOIN'이 무엇 : https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries006.htm – Nicarus
당신은 할 수 90 일 평균을 계산하는 SQL 함수를 작성하십시오. 매개 변수로 WKN 및 종료 날짜를 허용하고 평균을 반환합니다. 이 쿼리를 메인 쿼리와 별도로 테스트하여 작동 시키십시오. 그런 다음 주요 SQL select에서이 함수를 호출합니다. –
대학을 위해서이 작업을 수행해야하며 사용자 정의 SQL 함수를 사용할 수 없습니다. join과 coalesce() 함수로 해결하려고 노력할 것이다. – Lonkey