2016-12-02 2 views
0

조건 및 다른 차원 테이블의 참조를 기반으로 동일한 테이블의 다른 행과 열에서 팩트 테이블의 값을 업데이트해야합니다.MSSQL : 다른 행의 값과 조건에 따라 동일한 테이블의 다른 열

enter image description here
에는 판매 행 샘플 (2 개 항목, 2 일, 2 개 사이트)이 있습니다.

enter image description here
에는이 예제에서는 하나의 행만 들어 있습니다.

내가 찾는 것은 qty_ref에 사이트와 날짜가 일치하는 - 및 참조 테이블에서 일치하는 항목이있는 경우 qty를 업데이트하는 하나의 SQL 쿼리입니다. 내 사진이 이것을 설명하는 데 도움이되기를 바랍니다.

나는 2016 년

내 팩트 테이블 행 수백만를 포함하고 dim_ref 테이블 행의 수천의 커플까지 성장할 수 SQL Server와 푸른 SQL 데이터베이스를 사용하고 있습니다.

+0

이 예상대로 이미 꽤 작동하지 않는이 일을 쓴 SQL을 포함하도록 질문을 편집하는 경우 우리가 이해하는 데 도움이 될 수 있습니다 . – mendosi

답변

0

내부에 간단한 업데이트가 트릭을해야 가입 :

UPDATE f1 
SET qty_ref = f2.qty 
FROM fact_sales f1 
INNER JOIN dim_item_ref d ON(f1.item = d.item) 
INNER JOIN fact_sales f2 ON(d.item_ref = f2.item) 
WHERE f1.site = f2.site 
AND f1.date = f2.date 
+0

감사합니다! 나는 그 자체로 거대한 사실 테이블에 합류하는 것을 너무 두려워했다. 나는 최상의 솔루션이 윈도우 함수 등을 사용할 것이라고 생각했지만 큰 테이블에 합류하는 내부는 자원 집약적이지 않다. –

+0

다행 :-) 당신이 올바른 색인을 가지고 있다면, 수백만 행은 아무것도 아닙니다 ... –

관련 문제