Sql join 2聚合列

时间:2011-04-01 11:02:32

标签: group-by sql-server-ce aggregate

我有一张看起来像这样的表:

Name   |   Quantity  |   Unit
-------+-------------+----------
Water         10        Lt
Water         5         Lt
Water         3         Lt
Snacks        20        Kg
Snacks        15        Kg
Beer          7         Lt
Beer          12        Lt
Pizza         1         Piece
Pizza         2         Piece
Pizza         5         Piece

我需要得到这些结果:

Name   |  Quantity_Unit  
-------+------------------
Water         18 Lt
Snacks        35 Kg
Beer          19 Lt
Pizza         8 Piece

因此,我需要按产品选择数量总和,并在同一列中添加度量单位。这很简单,我就是这样做的:

select name, cast(sum(quantity) as nvarchar) + ' ' + max(unit) as total 
from goods group by name

我的问题是如何在不使用聚合函数(如max(单位)或使用max()的情况下将sum(量)添加到聚合列的度量单位?基本上所有分组中的商品都具有相同的度量单位,我正在寻找最优雅的查询。感谢。

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可以使用 MAX MIN ,这对您的结果没有任何影响。

您也可以通过查询列unit并在group by子句中添加相同的函数来避免聚合函数MAX和MIN。

select name, cast(sum(quantity) as nvarchar) + ' ' + unit as total 
from goods group by name, unit