2014-01-08 5 views
0

다른 카테고리, 항목 및 비용이 포함 된 임시 테이블 #Table을 작성 중입니다. 각의 합을 포함 I 카테고리, 항목과 각 행이, 내 처리를 위해 임시 테이블을받을 때테이블에 이미있는 행을 기반으로 임시 테이블에 삽입

Category Item Cost 
-------- ---- ---- 
Office  Desk 100.00 
Office  Chair 75.00 
Office  PC  800.00 
Home  Desk 0.00 

및 비용뿐만 아니라 요약 행 : 예를 들어

비제로 총을 가지고 카테고리 :

Category Item Cost Type 
-------- ---- ---- ----- 
Office  Desk 100.00 Cost 
Office  Chair 75.00 Cost 
Office  PC  800.00 Cost 
Office  null 975.00 Summary 
Home  Desk 0.00 Cost 

지금뿐만 아니라 $ 0.00 비용 행에 대한 요약 행을 추가하고 싶지만 그 방법을 알아내는에 문제가 있어요.

INSERT INTO #Table 
SELECT X.Category, null, 0.00, 'Summary' 
FROM #Table X 
...[Get Category data that does not have a Summary row] 

나는 약

WHERE NOT EXISTS (SELECT * FROM #Table Y WHERE Y.Category = X.Category AND Type = 'Summary') 
GROUP BY X.Category 

생각하지만,이 테이블의 행이 많이있을 수 있기 때문에, 성능에 대한 걱정했다.

+0

perf에 대한 우려가있는 경우 실행 계획을 게시하십시오. 얼마나 걸리지 만 얼마나 낮은가? – usr

+0

명확히하십시오. #table에서 카테고리를 자신에게 삽입 하시겠습니까? – Zane

답변

0

성능을 벤치 마크해야하지만 조인 속도가 빠릅니다. 또한 데이터 세트가 매우 큰 경우, 데이터가 임시 테이블에로드 된 후 인덱스를 추가하면 후속 테이블 쿼리가 크게 빨라질 수 있습니다.

INSERT INTO #Table 
    SELECT X.Category, null, 0.00, 'Summary' 
    FROM #Table X 
    LEFT JOIN #Table Y ON Y.Category = X.Category AND Y.Type = 'Summary' 
    WHERE Y.Category IS NULL 
0

방법은 2 단계로이 일에 대해 -

1 - 요약 정보 이없이 - - 바로 원시 데이터를 삽입 더 많은 데이터 삽입 - 비용 SUM 집계를 사용하여 범주 별 SELECT 데이터 그룹화, 유형 필드에 대한 요약 & 항목에 대한 하드 코딩 NULL.

관련 문제