SQL小组由by by by?
问题描述:
假设我有3个表格:客户,武器和订单。我想要创建一个表格,为每个客户我需要显示他/她每种类别(枪,手枪等)购买的商品数量和武器总量?它是否仅使用SQL查询来实现?我可以在没有子查询的情况下实现这一点,因为我打算使用SQL CE?SQL小组由by by by?
表有以下结构: 客户(ID,姓名) 武器(ID,weapon_type) 订单(CUST_ID,weap_id,数量)
,我想这一点:
Name | Order(w_type) | Quantity | Total -----------+---------------+--------------+----------- John Smith | Guns | 3 | 7 John Smith | Pistols | 4 | 7 -----------+---------------+--------------+----------- Jane Doe | Guns | 5 | 14 Jane Doe | Pistols | 7 | 14 Jane Doe | Cannons | 2 | 14
或(更好)
Name | Order | Quantity | Total -----------+---------------+--------------+----------- John Smith | Guns | 3 | John Smith | Pistols | 4 | -----------+---------------+--------------+----------- 7 -----------+---------------+--------------+----------- Jane Doe | Guns | 5 | Jane Doe | Pistols | 7 | Jane Doe | Cannons | 2 | -----------+---------------+--------------+----------- 14
谢谢。
答
CE中没有任何分析函数(例如SUM()OVER)可以给出第一个结果。
如果您的意图(“更好”)结果是第二个,甚至不是表格,您需要激发两个查询;一个用于表格,另一个用于总和。要么是这样,要么在收集表格结果(按人员排序)时收集总和。
你可以发布你现有的查询吗?也许全桌结构,所以我们可以看到他们是如何相互链接? 'group-by`子句允许您指定多个列,因此您可以按名称,w_type等进行分组。另外,将总数作为单独的记录可能在某些SQL方言中是可能的(我认为Oracle可以通过“汇总”来完成),但我不确定SQL CE。 – FrustratedWithFormsDesigner 2011-02-10 17:03:06