Foxtable(狐表)用户栏目专家坐堂 → [求助] 关于SQL 语句


  共有1475人关注过本帖树形打印复制链接

主题:[求助] 关于SQL 语句

帅哥哟,离线,有人找我吗?
ncefans
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
[求助] 关于SQL 语句  发帖心情 Post By:2017/9/21 23:06:00 [只看该作者]

不好意思,搞不定了,求助.. 对SQL实在不熟.

有两个表. 
表1) 订单表   相关列: 订单号,订单总数,订单日期
表2) 出货记录  相关列: 订单号,出货数量

两个表使用"订单号"列关联. 一个订单号对应一条到多条出货记录.

现在需要查询: 近两年之内, 订单总数和出货总数(出货数量之和)不一致的记录.

select 订单号,sum(出货数量) as 出货总数 f rom {出货记录} where 订单号 in 
(
select 订单号 f rom {订单表 }WHERE DateDiff(m, 订单日期, GetDate()) <24
)
group by 订单号

到这一步,只是统计了两年内的订单,出货总数. 请问如何再连接订单表并把订单总数和出货总数(出货数量之和)不一致的记录从订单表中取出来? 谢谢!

统计日期以订单表的订单日期为准...不管出货日期.

[此贴子已经被作者于2017/9/21 23:07:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/21 23:43:00 [只看该作者]

语句1:select 订单号, sum(出货数量) as 出货总数 from 出货记录 group by 订单号

 

语句2:select 订单号, sum(订单总数) as 订单总数 from 订单表 WHERE DateDiff(m, 订单日期, GetDate()) <24 group by 订单号

 

语句3:select * from (语句2) as a left join (语句1) as b on a.订单号=b.订单号 where a.订单总数 <> b.出货总数


 回到顶部
帅哥哟,离线,有人找我吗?
ncefans
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
  发帖心情 Post By:2017/9/22 9:46:00 [只看该作者]

谢大神回复,原来生成的表可以用别名再这样引用联接。 问一下,像语句1这样把所有行都计算了,如果记录很多,这样会不会有效率问题?
[此贴子已经被作者于2017/9/22 9:46:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/22 10:14:00 [只看该作者]

2楼这样写代码,比你用 in 的效率高很多。不要怀疑sqlserver处理连接查询的能力。

 回到顶部
帅哥哟,离线,有人找我吗?
ncefans
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
  发帖心情 Post By:2017/9/22 11:07:00 [只看该作者]

好的,收到

 回到顶部