2012-02-14 49 views
1

我想了解如何在一行中显示所有项目的表(项目数量)中的总值。下面的代码显示了每行中每个项目的总数,而不是所有项目的总值。如何才能做到这一点?显示一行中的总金额(SQL服务器)

我想我应该使用子查询,但不是如何设计它。

在此先感谢

SELECT CONVERT(Decimal(8,0),ROUND((quantity*price),2)) AS Total 
FROM Item 

编辑:通过mistage我包括ITEM​​NAME,即不得为结果的一部分!

表设计如下:

ITEMNAME QUANTITY PRICE 
Table  20   100 
Chair  30   50 
and so on 

结果如下:

ITEMNAME TOTAL 
Table  2000 
Chair  1500 

我想这样说:

TOTAL 
3500 
+3

请编辑这是你的问题提供示例输出并使你的列名和文本描述相匹配。 (你在你的文本中说'(item * quantity)',但是在你的SQL中引用'(quantity * price)'。如果你的问题在术语中保持一致,则更容易回答。) – 2012-02-14 20:33:56

回答

6
SELECT SUM (quantity*price) AS Total 
FROM Item 
0

您需要使用SUM()GROUP BY

SELECT Itemname, CONVERT(Decimal(8,0),ROUND((SUM(quantity*price)),2)) AS Total 
FROM Item 
GROUP BY Itemname 

如果要包含其他列,则需要包含GROUP BY

如果你只是想总,然后

SELECT SUM(quantity*price) AS Total 
FROM Item 

如果你想要的所有记录的总和,那么你可以做到以下几点,这将让所有行的总和:

SELECT SUM(T.Total) 
FROM 
(
    select sum(quantity*price) as total 
    from Item 
) T 

如果你想添加的转换:

SELECT CONVERT(Decimal(8,0),ROUND(SUM(T.Total)),2)) 
FROM 
(
    select sum(quantity*price) as total 
    from Item 
) T 
+2

他不需要group by子句,this查询将返回每个唯一的物品名称的总和 – Anton 2012-02-14 20:36:08

+0

我已经尝试过,但由于某种奇怪的原因,它会产生相同的结果。 :/ – holyredbeard 2012-02-14 20:36:51

+0

使用@list提供的查询。你也可以使用window(row)函数,如果你的数据库提供者支持它 – Anton 2012-02-14 20:38:21