项目中遇到的难题:一个疑难SQL语句

虾条哥 2020-03-25 11:29:05
需要查询的数据来源于两张数据表:OrderList(订单表)、ShopInfo(门店表)

订单表涉及到的查询字段如下:
order_id(订单号,主关键字)、order_status(订单状态)、order_date(下单时间)、shop_id(门店号)、money(订单金额)。

门店表涉及到的查询字段如下:
shop_id(主关键字,订单表的外键)、shop_sheng(门店所在省)、shop_shi(门店所在市)、shop_xian(门店所在县)、shop_address(门店详细地址)、shop_boss(门店负责人)、shop_phone(门店收货手机号码)

每个门店每天会有若干个订单,总公司每天通过快递或邮政的方式发货到门店。当天订单总金额高于指定金额(假如是100)的门店,走快递发货,低于指定金额的门店,走邮政发货,对于偏远地区(新疆、西藏、内蒙、青海),一律走邮政发货。

发快递的SQL很快写好了:
SELECT a.shop_id, a.shop_boss, a.shop_phone, a.shop_sheng, shop_shi, shop_xian, a.shop_address, SUM(b.money) as sum_money,COUNT(b.order_id) as order_cnt FROM shopInfo a inner join OrderList b on a.shop_id = b.shop_id
WHERE b.order_status = 5 AND NOT a.shop_sheng IN ('新疆','西藏','内蒙','青海') AND order_date BETWEEN @date1 AND @date2
GROUP BY a.shop_id, a.shop_boss, a.shop_phone, a.shop_sheng, a.shop_shi, a.shop_xian, a.shop_address
HAVING SUM(b.money)>=100
能正确查询到数据

但是,发邮政的SQL按下面写出来后,查询到的数据不对:
SELECT a.shop_id, a.shop_boss, a.shop_phone, a.shop_sheng, shop_shi, shop_xian, a.shop_address, SUM(b.money) as sum_money,COUNT(b.order_id) as order_cnt FROM shopInfo a inner join OrderList b on a.shop_id = b.shop_id
WHERE b.order_status = 5 AND order_date BETWEEN @date1 AND @date2 OR a.shop_sheng IN ('新疆','西藏','内蒙','青海')
GROUP BY a.shop_id, a.shop_boss, a.shop_phone, a.shop_sheng, a.shop_shi, a.shop_xian, a.shop_address
HAVING SUM(b.money)<100

分析发现,是WHERE条件里面的 OR 部分对收货地区的限定不对,但这个条件该怎么写呢?卡了好久,写不出来,只好求助大神了。
...全文
77 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
虾条哥 2020-03-25
  • 打赏
  • 举报
回复
自己搞定了,把 OR部分写到 HAVING子句里面

SELECT a.shop_id, a.shop_boss, a.shop_phone, a.shop_sheng, shop_shi, shop_xian, a.shop_address, SUM(b.money) as sum_money,COUNT(b.order_id) as order_cnt FROM shopInfo a inner join OrderList b on a.shop_id = b.shop_id
WHERE b.order_status = 5 AND order_date BETWEEN @date1 AND @date2
GROUP BY a.shop_id, a.shop_boss, a.shop_phone, a.shop_sheng, a.shop_shi, a.shop_xian, a.shop_address
HAVING SUM(b.money)<100 OR a.shop_sheng IN ('新疆','西藏','内蒙','青海')

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧