赞
踩
#ds1数据集sql :
select strftime('%Y-%m',订购日期) as 日期,strftime('%Y',订购日期) as 年份,
count(订单.订单ID) as 订单数量,
sum(case when 是否已付="true" then 1 else 0 end) as 已付订单数量,
sum(单价*数量) as 月销量
from 订单 join 订单明细 on 订单.订单ID=订单明细.订单ID
where 1=1 ${if(len(年份) == 0,"","and strftime('%Y',订购日期) = '" + 年份 + "'")}
group by 2,1 order by 1
1、加入if(len(年份) == 0,
的判断是为了无年份参数值输入时可以显示全部年份所有的信息,即
select strftime('%Y-%m',订购日期) as 日期,strftime('%Y',订购日期) as 年份,
count(订单.订单ID) as 订单数量,
sum(case when 是否已付="true" then 1 else 0 end) as 已付订单数量,
sum(单价*数量) as 月销量
from 订单 join 订单明细 on 订单.订单ID=订单明细.订单ID
where 1=1
group by 2,1 order by 1
2、如果年份的字段长度不为 0 ,那么执行的语句是
select strftime('%Y-%m',订购日期) as 日期,strftime('%Y',订购日期) as 年份,
count(订单.订单ID) as 订单数量,
sum(case when 是否已付="true" then 1 else 0 end) as 已付订单数量,
sum(单价*数量) as 月销量
from 订单 join 订单明细 on 订单.订单ID=订单明细.订单ID
where 1=1 and strftime('%Y',订购日期) = ${"'" +年份 + "'"}
group by 2,1 order by 1
将年份作为参数,将该参数获取到的值与数据库中的订购日期(年)比较作为筛选条件;
4、输入参数值年份时,输入的是数字ex:2011,2010等,但在数据库中订购日期是字符串类型的,所以将参数传递的值转换成字符串类型,ex:‘2011’,‘2010’
2,1指的是select后的字段,即年份和日期;通过年份和日期进行分组
即通过日期进行排序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。