关于SQL Server的GROUP BY的问题

来源:百度知道 编辑:UC知道 时间:2024/04/28 05:15:45
SELECT S.CITY,O.TOTAL
FROM OM_ORDERS AS O,MB_USERS AS U,SY_SHOPS AS S,OM_ORDER_DETAILS AS D,GI_GOODS AS G
WHERE O.USER_ID=U.USER_ID
AND U.USERFLAG='目录册会员'
AND O.SHOP_ID=S.SHOP_ID
AND O.ORDER_ID=D.ORDER_ID
AND D.CODE=G.CODE
AND G.NAME LIKE '圣元%'
AND S.CITY='上海'

上面得到的结果会出现很多重复的条目,该添加怎么样的WHERE防止出现重复呢?多谢~~~
OM_ORDERS是订单表MB_USERS是会员表SY_SHOPS是店面表,OM_ORDER_DETAILS是订单详细条目表,GI_GOODS是商品表,其他相关的表还有GI_BRANDS品牌表,GI_GOODS_MAIN_CATEGORY 一级分类表 ,GI_GOODS_MINOR_CATEGORY 二级分类表 ,OM_ORDER_RETURNHISTORY 退货历史表 ,OM_ORDER_RETURN 退货金额历史表 ,需要查询的是店面(城市)名称、总销售、销售(不含圣元奶粉)、医务总销售、医务销售(仅含圣元奶粉)、医务直销、医务寄卖、医务特渠、医务直销(仅含圣元奶粉)、医务寄卖(仅含圣元奶粉)、医务特渠(仅含圣元奶粉) 其中数据要剔出退货的金额。愁死我了,看着就头疼,需要关联N个表

我看下来觉得你想得到的数据就是每个城市的一个金额汇总数,无疑是要用Group by。建了N多别名,搞得自己头都大了吧?其实对于不同级的分类表你用嵌套分步汇总起来,别把那么多表一把抓在一起,很容易思路混乱的

你重复的是哪里的数据,你查询这么复杂的结构。。。

Group by的用法

Select * From 表 Where子句 Group by '重复值的字段' Order by子句

你先建个简单的表看看,或者两个表。然后搞一个字段里面有大部分重复值,然后再查查,你就了解了。

你的数据结构的问题
只要CITY,TOTAL,干吗要牵扯这么多数据表

根据你的修改,建议用多层SELECT嵌套
看看下面网页的例子
http://www.ddvip.net/database/oracle/index1/19.htm

看的晕。除了group by 还可以用 distinct