首页 > 解决方案 > 如何插入包含变量关系而不是记录的列

问题描述

我想在描述列之前插入一列。我希望它是这样的:

///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

标签: sql-servertsqlvariables

解决方案


您可能正在寻找某种使用窗口函数的方法。通常,您可以将特定的聚合函数与OVER子句结合使用。这允许您在行级别获取聚合,而无需指定GROUP BY子句。

例如,您也可以计算累计总数。在你的情况下,我想你可以用它PARTITION BY来计算Total_QTY特定种类的项目。我相信你会设法处理这个问题,因为你正在使用良好的排名功能(概念是相同的)。

所以,你可以尝试这样的事情:

SUM(QTYColumn) OVER () * UnitCost

如果数据已经过滤了特定项目,或者:

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

推荐阅读