MySQL社区

标题: mysql关于查询跨年新货销售的语句! [打印本页]

作者: 平常心已占用    时间: 2016-8-12 09:13
标题: mysql关于查询跨年新货销售的语句!
有那么大神知道怎么去查询新货销售的语句,,有一张item表和一张商品明细表detail,,item表有货品的item_id和年份year字段,季节字段sea,还是属于商品销售季节的开始字段s_date和结束字段e_date,明细表detail有商品的销售日期,销售金额,item_id,因为季节可能涉及到跨年,所以如果用销售日期去定义是否属于新品的销售的话,,可能会有误差,,有没有哪位大神可以写出mysql语句可以查询到所以属于新货销售的语句!谢谢!举个例子,,如果我们定义12,1,2月为冬季,此时再根据销售日期去判断的话就可能查询不出来,,,有没有一种算法可以包含不同年份的查询语句。。。。

作者: yflower    时间: 2016-8-12 16:26
先用case 分清楚要分组的情况类型
再结合group by 进行分组
group by (case ......);

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

参考自:
MySQL控制流程函数 http://www.data.5helpyou.com/article327.html
作者: 平常心已占用    时间: 2016-8-15 09:05
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
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
能帮忙讲解一下上面的语句吗?




欢迎光临 MySQL社区 (http://www.mysqlpub.com/) Powered by Discuz! X3.2