如何插入包含变量关系而不是记录的列

时间:2018-11-03 06:32:22

标签: sql-server tsql variables

我希望在说明栏之前插入栏。我希望它像这样:

///Totalcolumn = QNTColumn * UnitCostColumn///

我不希望它只包含一条记录。

这会为我说话:

CREATE PRCOEDURE GetAllGoods
AS
    SELECT 
        ROW_NUMBER() OVER (ORDER BY namecolumn) AS RowNumberColumn,
        CodeColumn,
        NameColumn,
        SUM(QTYColumn) AS Total_QTY,
        UnitCostColumn,
        DiscountRateColumn,
        **->INSERT HERE (Total_QTY) * UnitCost AS Total_Cost
        DescriptionColumn
    FROM 
        GoodsTable1

2 个答案:

答案 0 :(得分:0)

您可能正在寻找window function的某种用法。通常,您可以将特定的聚合函数与OVER子句结合使用。这使您无需指定GROUP BY子句就可以在行级别获得聚合。

对于example,您也可以计算累积总数。就您而言,我想您可以使用PARTITION BY来计算特定种类物品的Total_QTY。我相信当您使用排名靠前的功能(概念是相同的)时,您将设法解决这个问题。

因此,您可以尝试执行以下操作:

SUM(QTYColumn) OVER () * UnitCost

如果数据已经针对特定项目进行过滤,或者:

SUM(QTYColumn) OVER (PARTITION BY itemID) * UnitCost

答案 1 :(得分:0)

尝试一下

SELECT 
        ROW_NUMBER() OVER (ORDER BY namecolumn) AS RowNumberColumn,
        CodeColumn,
        NameColumn,
        SUM(QTYColumn) AS Total_QTY,
        UnitCostColumn,
        DiscountRateColumn,
        sum(QTYColumn) * UnitCostColumn AS Total_Cost,
        DescriptionColumn
    FROM 
        GoodsTable1
    GROUP BY
         CodeColumn, NameColumn, UnitCostColumn, DiscountRateColumn, DescriptionColumn