문제
내 스프로에서 #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
제휴하지 않습니다 StackOverflow