반응형
Oracle SQL: Select Statement와 함께 시퀀스 삽입 사용
기본적으로 다음 쿼리를 실행합니다.
INSERT INTO historical_car_stats (historical_car_stats_id, year, month, make, model, region, avg_msrp, count)
SELECT
my_seq.nextval,
'2010',
'12',
'ALL',
'ALL',
region,
sum(avg_msrp * count) / sum(count),
sum(count)
FROM historical_car_stats
WHERE year = '2010'
AND month = '12'
AND make != 'ALL'
GROUP BY region;
시퀀스 번호는 여기서 허용되지 않습니다.SQL 오류 때문에 작동하지 않습니다.Oracle이 원하는 작업을 수행할 수 있도록 하려면 어떻게 해야 합니까?
시퀀스를 사용하여 키를 생성하기 전에 데이터를 그룹화한다고 가정하면 다음과 같은 것을 원하는 것처럼 들립니다.
INSERT INTO HISTORICAL_CAR_STATS (
HISTORICAL_CAR_STATS_ID,
YEAR,
MONTH,
MAKE,
MODEL,
REGION,
AVG_MSRP,
CNT)
SELECT MY_SEQ.nextval,
year,
month,
make,
model,
region,
avg_msrp,
cnt
FROM (SELECT '2010' year,
'12' month,
'ALL' make,
'ALL' model,
REGION,
sum(AVG_MSRP*COUNT)/sum(COUNT) avg_msrp,
sum(cnt) cnt
FROM HISTORICAL_CAR_STATS
WHERE YEAR = '2010'
AND MONTH = '12'
AND MAKE != 'ALL'
GROUP BY REGION)
테스트를 해봤더니 스크립트는 정상적으로 실행이 됩니다!
INSERT INTO HISTORICAL_CAR_STATS (HISTORICAL_CAR_STATS_ID, YEAR,MONTH,MAKE,MODEL,REGION,AVG_MSRP,COUNT)
WITH DATA AS
(
SELECT '2010' YEAR,'12' MONTH ,'ALL' MAKE,'ALL' MODEL,REGION,sum(AVG_MSRP*COUNT)/sum(COUNT) AVG_MSRP,sum(Count) COUNT
FROM HISTORICAL_CAR_STATS
WHERE YEAR = '2010' AND MONTH = '12'
AND MAKE != 'ALL' GROUP BY REGION
)
SELECT MY_SEQ.NEXTVAL, YEAR,MONTH,MAKE,MODEL,REGION,AVG_MSRP,COUNT
FROM DATA;
자세한 내용은 이 기사를 읽어주세요!http://www.orafaq.com/wiki/ORA-02287
언급URL : https://stackoverflow.com/questions/7125936/oracle-sql-use-sequence-in-insert-with-select-statement
반응형
'source' 카테고리의 다른 글
ng-repeat 및 nested 루프가 있는 행 추가 (0) | 2023.03.05 |
---|---|
오류 '디지털 봉투 루틴', 이유: '지원되지 않음', 코드: 'ERR_OSSL_EVP_'를 받는 중지원되지 않음' (0) | 2023.03.05 |
컴포넌트 클래스의 템플릿 참조 변수에 액세스합니다. (0) | 2023.03.05 |
ASP에서 JSON을 반환하는 방법NET 및 jQuery (0) | 2023.02.28 |
word press permalinks가 작동하지 않음 - htaccess는 정상으로 보이지만 페이지에 404 오류가 표시됨 (0) | 2023.02.28 |