我正在寻找一些美好而甜蜜的东西,这样我就可以获得每行两列的产品,然后将这些产品中的每一个加在一起,并将它们合计为最终总数。
解决方案必须与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
谢谢,
答案 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