작은 전자 상거래를위한 데이터웨어 하우스를 설계하고 product 및 product_price_history의 두 테이블에서 제품에 대한 차원 테이블을 채워야합니다.Oracle - 다중 테이블에서 차원 테이블에 삽입하는 프로 시저 만들기
제품 (prod_id, 브랜드) product_price_history (prod_id, 가격, min_pirce, 시작일, 종료일) product_dim (prod_key, prod_id, 브랜드, 가격, min_pirce, 시작일 : 간단하게하기 위해의 각 테이블의 열은 다음과 같습니다 가정 해 봅시다 , end_date)
그리고 product_dimension 테이블에 대한 키를 생성하기 위해 prod_seq라는 시퀀스가 이미 있습니다. 이것은 내가 지금까지 내 절차 가지고있는,하지만 난 점점 오류 ':
create or replace
procedure populate_product_dimension AS
BEGIN
INSERT into product_dim (prod_key, prod_id, brand, price, min_pirce, start_date, end_date)
SELECT seq_prod.nextval FROM DUAL
SELECT prod_id, brand
FROM product
SELECT price, min_pirce, start_date, end_date
FROM product_price_history
WHERE prod_id.product_pric_history = prod_id.product &
prod_id not in(select prod_id from product_dim);
Commit;
End populate_product_dimension;
나는 문제가있을 수 있습니다 생각 때문에 내가 prod_key을 추가 해요 방법을. 어떤 사람이 이것을하는 더 좋은 방법을 알고 있습니까?
감사합니다. 그랬어! 이제 차원 테이블에 상태 열을 추가하고 product_history_table의 end_date가 설정되지 않으면 (null) Availble에 값을 채 웁니다. 사용 가능하지 않으면 사용할 수 없습니다. 위의 코드에서 가능합니까? – seemvision
'NVL2 (ph.end_date, '사용 가능', '사용할 수 없음')'그럴 것입니다. –
멋진! 감사. – seemvision