2011-02-10 57 views
1

假设我有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 

谢谢。

+0

你可以发布你现有的查询吗?也许全桌结构,所以我们可以看到他们是如何相互链接? 'group-by`子句允许您指定多个列,因此您可以按名称,w_type等进行分组。另外,将总数作为单独的记录可能在某些SQL方言中是可能的(我认为Oracle可以通过“汇总”来完成),但我不确定SQL CE。 – FrustratedWithFormsDesigner 2011-02-10 17:03:06

回答

0

CE中没有任何分析函数(例如SUM()OVER)可以给出第一个结果。

如果您的意图(“更好”)结果是第二个,甚至不是表格,您需要激发两个查询;一个用于表格,另一个用于总和。要么是这样,要么在收集表格结果(按人员排序)时收集总和。