Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入#temp之前的SQL Sum列_Sql_Sum_Group By - Fatal编程技术网

插入#temp之前的SQL Sum列

插入#temp之前的SQL Sum列,sql,sum,group-by,Sql,Sum,Group By,在我的存储过程中,名为#temp1的表包含以下列: #temp1 (StoreId, StoreDesc, ReservedQty, AvgPrice, QtyOnHand) 我的问题基于以下查询 INSERT INTO #temp2 (StoreId, StoreDesc, CommittedQty) (SELECT StoreId, StoreDesc, CASE WHEN ReservedQty > QtyOnHand THEN sum(QtyO

在我的存储过程中,名为#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
不幸的是,由于我必须在我的
CASE
语句中按
QtyOnHand
ReservedQty
列对
进行分组,因此每个StoreId都有多行

我想知道是否有一种简单的方法可以让我(再次)根据CommittedQty对结果进行汇总,这样我就可以得到我想要的以下结果集:

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

我意识到我可以使用另一个临时表,但想知道在
SELECT
语句中是否有更简单的方法来实现这一点我不会使用临时表。我猜您已经使用了至少一个过多:)

SELECT  StoreId,  StoreDesc, 
        SUM(
        CASE
        WHEN ReservedQty > QtyOnHand THEN
                QtyOnHand * AvgPrice 
        ELSE
                ReservedQty * AvgPrice
        END
        ) AS CommittedQty
FROM    #temp1 
GROUP BY
        StoreId, StoreDesc
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
您需要在整个案例陈述中列出金额:

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

我不会用临时桌。我猜您已经使用了至少一个过多:)

您需要在整个案例陈述中列出金额:

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

第一件事:如果你能避免使用#temp和#temp表,你应该这样做。它们是导致全球变暖和山洪暴发的邪恶的、令人讨厌的小东西,是各种温室气体排放的罪魁祸首。(:

除此之外,除非是绝对必要的,否则请去掉临时表,并在必要时将其替换为子查询

您可以简单地将另一个select环绕在该语句周围

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

第一件事:如果你能避免使用#temp和##temp表,你应该这样做。它们是导致全球变暖和山洪暴发的邪恶、肮脏的小东西,是造成各种温室气体排放的罪魁祸首。(:

除此之外,除非是绝对必要的,否则请去掉临时表,并在必要时将其替换为子查询

您可以简单地将另一个select环绕在该语句周围

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

在另一个论坛上发布了该问题,并在两个论坛上收到了相同的答案。谢谢Guy在另一个论坛上发布了该问题,并在两个论坛上收到了相同的答案。谢谢各位