在SQL Query Access 2007中添加类似的动态行

时间:2013-09-22 08:24:09

标签: sql ms-access add distinct-values

我需要执行与此类似的操作,标记字段将具有动态生成的值。

Tag                     | Qty  | Price_Of_Unit
--------------------------------------------------
Jam Bottle 90ml         | 2    | $9
Jam Bottle 180ml        | 1    | $15
Jam Bottle 180ml        | 3    | $15
Jam Bottle 180ml        | 2    | $15
Jam Bottle 90ml         | 2    | $9

我想要一个返回如下内容的查询:

Tag                     | Qty  | Price_Of_Unit
--------------------------------------------------
Jam Bottle 90ml         | 4    | $9
Jam Bottle 180ml        | 6    | $15

添加了数量字段,而标记字段没有重复值。

不是:该表包含我将从中生成此查询的字段

ID, Tag, QTY, Price_Of_Unit

如果有人能回答,我绝望了! 提前致谢! Bhashithe

2 个答案:

答案 0 :(得分:1)

你是说你想要一个小组吗?

SELECT
    Tag
    ,sum(QTY)
    ,sum(Price_Of_Unit)
FROM
    Table
GROUP BY
    Tag

这将“分组”所有具有相同标记的行,其他列是行组中的函数 - 这里我选择了sum,它将所有QTY和Price_Of_Unit列相加。

分组依据:

http://office.microsoft.com/en-gb/access-help/group-by-clause-HA001231482.aspx

你可以做其他“聚合”功能而不是总和:

http://msdn.microsoft.com/en-us/library/office/bb177686(v=office.12).aspx

答案 1 :(得分:0)

对于每个代码,您希望总结Qty,同时还会显示个人Price_of_Unit。你将不得不以一种迂回的方式解决这个问题:

select t.Tag, sq.TotalQty, t.Price_of_Unit
from YourTable as t
inner join (
  select Tag, sum(Qty) as TotalQty
  from YourTable
  group by Tag
) as sq
on t.Tag = sq.Tag

这是因为当您使用分组时,SQL需要聚合未明确分组的每个列。因此,在按Tag分组后,您需要汇总Qty(在这种情况下,按每个代码的总数量)。如果您还要在Price_of_Unit子句的选择查询中包含group by,那么您还需要汇总这个,@ gordatron通过总计单价来完成 - 这是您同意的没有意义。