문제

내 스프로에서 #temp1이라는 테이블에는 다음 열이 포함되어 있습니다.

#temp1 (StoreId, StoreDesc, ReservedQty, AvgPrice, QtyOnHand)

내 질문은 다음 쿼리를 기반으로합니다

INSERT INTO #temp2 (StoreId, StoreDesc, CommittedQty)
(SELECT     StoreId,  StoreDesc, 
    CASE WHEN ReservedQty > QtyOnHand THEN
        sum(QtyOnHand * AvgPrice) 
    ELSE
        sum(ReservedQty * AvgPrice) 
    END AS CommittedQty
    FROM #temp1 
    GROUP BY StoreId, StoreDesc, QtyOnHand, ReservedQty)

샘플 결과 세트는 다음과 같습니다.

StoreId                 StoreDesc   CommittedQty    
C4ED0D8B-22CF-40FE-8EF9-7FD764310C94    FramersBranch   0
C4ED0D8B-22CF-40FE-8EF9-7FD764310C94    FarmersBranch   88978
C4ED0D8B-22CF-40FE-8EF9-7FD764310C94    FarmersBranch   0
C4ED0D8B-22CF-40FE-8EF9-7FD764310C94    FarmersBranch   3152
6369D3A6-83BC-4BB0-9A25-86838CD2B7BA    Woodlands   5582
6369D3A6-83BC-4BB0-9A25-86838CD2B7BA    Woodlands   389

불행히도 내가해야했기 때문에 GROUP BY 그만큼 QtyOnHand & ReservedQty 내 열의 열 CASE 문장 각 상점에 대해 여러 행이 있습니다.

CommitedQty를 기반으로 결과 (다시)를 요약 할 수있는 간단한 방법이 있는지 알고 싶습니다.

StoreId v               StoreDesc   CommittedQty    
C4ED0D8B-22CF-40FE-8EF9-7FD764310C94    FramersBranch   92130
6369D3A6-83BC-4BB0-9A25-86838CD2B7BA    Woodlands   5971

나는 다른 온도 테이블을 사용할 수 있다는 것을 알고 있지만 내부에서 이것을 달성하는 더 쉬운 방법이 있는지 궁금했습니다. SELECT 성명

도움이 되었습니까?

해결책

나는 온도 테이블을 사용하지 않을 것입니다. 내 생각에 당신은 이미 적어도 하나 이상을 사용하고 있다는 것입니다. :)

전체 사례 진술에 합계를 두어야합니다.

SUM(AvgPrice *
     CASE
          WHEN ReservedQty > QtyOnHand THEN QtyOnHand
          ELSE ReservedQty
     END)

다른 팁

SELECT  StoreId,  StoreDesc, 
        SUM(
        CASE
        WHEN ReservedQty > QtyOnHand THEN
                QtyOnHand * AvgPrice 
        ELSE
                ReservedQty * AvgPrice
        END
        ) AS CommittedQty
FROM    #temp1 
GROUP BY
        StoreId, StoreDesc

가장 먼저 : #temp 및 ## temp 테이블을 사용하지 않으면해야합니다. 그들은 지구 온난화와 플래시 홍수를 일으키고 모든 종류의 그린 하우스 배출을 담당하는 사악한 불쾌한 작은 것들입니다. (:

절대적으로 필요하지 않은 한 농담을 해제하고 임시 테이블을 제거하고 필요한 경우 하위 쿼리로 교체하십시오.

이 진술에 대한 다른 선택을 간단히 포장 할 수 있습니다

INSERT INTO #temp2 (StoreId, StoreDesc, CommittedQty)
SELECT StoreId, StoreDesc, Sum (CommittedQty)
FROM 
(SELECT         StoreId,  StoreDesc, 
        CASE WHEN ReservedQty > QtyOnHand THEN
                sum(QtyOnHand * AvgPrice) 
        ELSE
                sum(ReservedQty * AvgPrice) 
        END AS CommittedQty
        FROM #temp1 
        GROUP BY StoreId, StoreDesc, QtyOnHand, ReservedQty)
)
GROUP BY StoreId, StoreDesc
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top