MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1672|回复: 3

[命令及语法] mysql关于查询跨年新货销售的语句!

[复制链接]
发表于 2016-8-12 09:13:29 | 显示全部楼层 |阅读模式
有那么大神知道怎么去查询新货销售的语句,,有一张item表和一张商品明细表detail,,item表有货品的item_id和年份year字段,季节字段sea,还是属于商品销售季节的开始字段s_date和结束字段e_date,明细表detail有商品的销售日期,销售金额,item_id,因为季节可能涉及到跨年,所以如果用销售日期去定义是否属于新品的销售的话,,可能会有误差,,有没有哪位大神可以写出mysql语句可以查询到所以属于新货销售的语句!谢谢!举个例子,,如果我们定义12,1,2月为冬季,此时再根据销售日期去判断的话就可能查询不出来,,,有没有一种算法可以包含不同年份的查询语句。。。。
发表于 2016-8-12 16:26:25 | 显示全部楼层
先用case 分清楚要分组的情况类型
再结合group by 进行分组
group by (case ......);

文字描述的不太清楚,你可以把图贴出来,大家帮你分析

参考自:
MySQL控制流程函数 http://www.data.5helpyou.com/article327.html
 楼主| 发表于 2016-8-15 09:05:43 | 显示全部楼层
SELECT a.item_id,a.brand_id,a.item_year as year_id,a.sea_id,b.sea_name,
      a.ic_id,c.ic_name,case when c.ic_prop=0 then 'Y' else 'N' end as is_acc,a.org_price as sale_price,a.item_desc,
          CONVERT(varchar(10), DATEADD(m, 0,RTRIM(CASE WHEN (b.e_mon < b.s_mon AND b.sea_id = 1)
          THEN a.item_year - 1 ELSE a.item_year END) + '-' + RTRIM(b.s_mon) + '-01'), 120) AS s_date,
      CONVERT(varchar(10), DATEADD(d, - 1, DATEADD(m, 1, RTRIM(CASE WHEN (b.e_mon < b.s_mon AND b.sea_id = 4)
          THEN a.item_year + 1 ELSE a.item_year END) + '-' + RTRIM(b.e_mon) + '-01')), 120) AS e_date
FROM SYDB0028.dbo.item_master a,SYDB0028.dbo.sea_info b,SYDB0028.dbo.item_category c
where a.data_state=2 and b.sea_id=a.sea_id and c.ic_id=a.ic_id

 楼主| 发表于 2016-8-15 09:08:58 | 显示全部楼层
SELECT a.item_id,a.brand_id,a.item_year as year_id,a.sea_id,b.sea_name,
      a.ic_id,c.ic_name,case when c.ic_prop=0 then 'Y' else 'N' end as is_acc,a.org_price as sale_price,a.item_desc,
          CONVERT(varchar(10), DATEADD(m, 0,RTRIM(CASE WHEN (b.e_mon < b.s_mon AND b.sea_id = 1)
          THEN a.item_year - 1 ELSE a.item_year END) + '-' + RTRIM(b.s_mon) + '-01'), 120) AS s_date,
      CONVERT(varchar(10), DATEADD(d, - 1, DATEADD(m, 1, RTRIM(CASE WHEN (b.e_mon < b.s_mon AND b.sea_id = 4)
          THEN a.item_year + 1 ELSE a.item_year END) + '-' + RTRIM(b.e_mon) + '-01')), 120) AS e_date
FROM SYDB0028.dbo.item_master a,SYDB0028.dbo.sea_info b,SYDB0028.dbo.item_category c
where a.data_state=2 and b.sea_id=a.sea_id and c.ic_id=a.ic_id
能帮忙讲解一下上面的语句吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-3-29 20:17 , Processed in 0.105234 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表