计算每行中两列的乘积,并使用Microsoft SQL生成总和结果总计

时间:2018-04-13 07:23:43

标签: sql sql-server

我正在寻找一些美好而甜蜜的东西,这样我就可以获得每行两列的产品,然后将这些产品中的每一个加在一起,并将它们合计为最终总数。

解决方案必须与MS SQL 2008/2012兼容。

表格示例。

|---------------------|------------------|
|         Qty         |       Price      |
|---------------------|------------------|
|          12         |       34.25      |
|---------------------|------------------|
|          44         |       11.05      |
|---------------------|------------------|

此表的结果应按如下方式计算:

第1行: 12 * 34.25 = 411

第2行: 44 * 11.05 = 486.20

最终计算结果: 897.20

谢谢,

4 个答案:

答案 0 :(得分:1)

首先将每个数量乘以它们的价格。

SELECT
    T.*,
    TotalByRow = Quantity * Price
FROM
    YourTable AS T

然后对所有结果进行总结。

SELECT
    Total = SUM(Quantity * Price)
FROM
    YourTable AS T

如果您需要按产品(或任何分组列)的结果,您可以添加GROUP BY子句(在上一个示例中,使用SUM()之类的聚合函数时没有GROUP BY然后整个表被认为是一个组。)

SELECT
    T.ProductID,
    Total = SUM(Quantity * Price)
FROM
    YourTable AS T
GROUP BY
    T.ProductID

答案 1 :(得分:1)

使用 GROUPING SETS 获取总计。

<强>查询

select [Qty], [Price], sum([Qty] * [Price]) as [Total]
from [your_table_name]
group by grouping sets(([Qty], [Price]), ());

答案 2 :(得分:0)

我总是在我的客户端计算整个总数,但你可以在sql中这样做:

declare @table table (qty int, price decimal(16,2))
insert into @table(qty, price) values (12, 34.25), (44, 11.05)

select qty, 
       price, 
       sum(qty * price) as total
from   @table
group by grouping sets((qty, price), ())

结果就是这个

qty   price   total 
---   -----   ----- 
12    34,25   411   
44    11,05   486,2 
              897,2 

有关分组集https://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx

的更多信息

答案 3 :(得分:0)

试试这个。

  SELECT TOP(1) TOTAL_AMOUNT 
    FROM (
            SELECT QTY
                , PRICE  
                , QTY*PRICE 'AMOUNT'
                , SUM(QTY*PRICE) OVER( ORDER BY  QTY ROWS BETWEEN UNBOUNDED PRECEDING  AND  0  PRECEDING ) 'TOTAL_AMOUNT'
            FROM PRODUCT ) AS GET_SUM
    ORDER BY GET_SUM.TOTAL_AMOUNT DESC

--SECOND SOLUTION: 
  select  SUM(qty*price) 'Amount'from product