求大神解答关于sqlserver的问题!! 新手发出求救信号!

现有3张表,1、订单表 2、订单子表 3、商品表
图片说明
图片说明
图片说明
订单子表的订单编号关联订单表的订单编号,商品表的编号关联订单子表的商品编号,下单时间只有订单表才有
需要根据订单表查询一段时间段内的总订单数和每个商品的订单数
(如2016/04/15-2016/05/15)这段时间内每天的总订单数和每个商品的订单数
大概就是下面的效果
图片说明
这样的效果 sqlserver的sql的select语句能写出来嘛?能的话求大神教教我!!!新手表示困惑了很久!!

5个回答

 select 下单时间,订单总量,
(case 品名 when '肉包' else 0 end) as 肉包,
(case 品名 when '菜猪油包' else 0 end) as 菜猪油包,
(case 品名 when '白馒头' else 0 end) as 白馒头,
(case 品名 when '红豆沙包' else 0 end) as 红豆沙包,
(
  select t4.下单时间,t3.品名,count(t3.品名) as 订单总量 from
  (
          select * from 商品表 t1
          left join 订单子表 t2 ON t1.编号=t2.商品编号
  ) t3
  left join 订单表 t4 on t4.订单编号=t3.订单编号
  group by t4.下单时间,t3.品名
  order by t4.下单时间
)

你可以参考参考,看看能不能实现

JustWantToFly
JustWantToFly 回复atangge_Yeer:不行我就很尴尬了,以后可以一起交流交流,主要是没有实体数据不好测试
接近 3 年之前 回复
atangge_Yeer
atangge_Yeer 虽然不行,还是要谢谢。
接近 3 年之前 回复

一段时间内的每天的总订单数和每个商品的订单数,大神们在哪儿,快来带带我 !!

在MySQL数据库中十分简单就可以运行,具体可以看我博客里面有大概讲解,拿走不谢。

atangge_Yeer
atangge_Yeer 可是我需要在sqlserver中运行 ( ⊙ o ⊙ )
接近 3 年之前 回复

select 开始时间,count(1) 总数量 from 订单表 a,订单子表 b,商品表 c where a.订单编号=b.订单编号 and b.商品编号=c.商品编号 and a.下单时间 between 开始时间 and 结束时间
union all
select 开始时间,count(1) 总数量 from 订单表 a,订单子表 b,商品表 c where a.订单编号=b.订单编号 and b.商品编号=c.商品编号 and a.下单时间 between 开始时间 and 结束时间
and b.商品=‘包子’
union all
......................................

不知道sqlserver里面有没有“列转行”,你搜索一下百度吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问