(统计的一定的时间段内的每一条的数据)
是查从当前日期开始 往前面的30天的订单量的一个功能 采用的是echars 形式实现的
<select id="getWaybillSumByDay" resultType="map">
SELECT
<foreach collection="list" item="day" separator=",">
MAX(CASE ed WHEN '${day}' THEN amount ELSE 0 END) '${day}'
</foreach>
FROM(
SELECT
DATE_FORMAT(enter_time, '%Y-%m-%d') ed,
COUNT(waybill_id) amount
FROM
u_operate
WHERE
dept_id = #{deptId}
AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(enter_time)
GROUP BY
DAY (enter_time)
ORDER BY ed DESC) tb
<select>
##上面是sql 采用的是 先在java代码里将那一段时间遍历出来然后传入sql 遍历出来 采用 case when then 的方法进行行转列的形式
DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(enter_time) 是 取30内的时间天数
DAY (enter_time) 是根据 表里的数据进行分组 enter_time表示的是数据库里面的数据
在数据库里 最原始的sql应该是这样的
SELECT
MAX(
CASE ed
WHEN ‘2018-08-20’ THEN
amount
ELSE
0
END
) ‘2018-08-20’,
MAX(
CASE ed
WHEN ‘2018-08-21’ THEN
amount
ELSE
0
END
) ‘2018-08-21’,
MAX(
CASE ed
WHEN ‘2018-08-22’ THEN
amount
ELSE
0
END
) ‘2018-08-22’,
MAX(
CASE ed
WHEN ‘2018-08-23’ THEN
amount
ELSE
0
END
) ‘2018-08-23’,
MAX(
CASE ed
WHEN ‘2018-08-24’ THEN
amount
ELSE
0
END
) ‘2018-08-24’,
MAX(
CASE ed
WHEN ‘2018-08-25’ THEN
amount
ELSE
0
END
) ‘2018-08-25’,
MAX(
CASE ed
WHEN ‘2018-08-26’ THEN
amount
ELSE
0
END
) ‘2018-08-26’,
MAX(
CASE ed
WHEN ‘2018-08-27’ THEN
amount
ELSE
0
END
) ‘2018-08-27’,
MAX(
CASE ed
WHEN ‘2018-08-28’ THEN
amount
ELSE
0
END
) ‘2018-08-28’,
MAX(
CASE ed
WHEN ‘2018-08-29’ THEN
amount
ELSE
0
END
) ‘2018-08-29’,
MAX(
CASE ed
WHEN ‘2018-08-30’ THEN
amount
ELSE
0
END
) ‘2018-08-30’,
MAX(
CASE ed
WHEN ‘2018-08-31’ THEN
amount
ELSE
0
END
) ‘2018-08-31’,
MAX(
CASE ed
WHEN ‘2018-09-01’ THEN
amount
ELSE
0
END
) ‘2018-09-01’,
MAX(
CASE ed
WHEN ‘2018-09-02’ THEN
amount
ELSE
0
END
) ‘2018-09-02’,
MAX(
CASE ed
WHEN ‘2018-09-03’ THEN
amount
ELSE
0
END
) ‘2018-09-03’,
MAX(
CASE ed
WHEN ‘2018-09-04’ THEN
amount
ELSE
0
END
) ‘2018-09-04’,
MAX(
CASE ed
WHEN ‘2018-09-05’ THEN
amount
ELSE
0
END
) ‘2018-09-05’,
MAX(
CASE ed
WHEN ‘2018-09-06’ THEN
amount
ELSE
0
END
) ‘2018-09-06’,
MAX(
CASE ed
WHEN ‘2018-09-07’ THEN
amount
ELSE
0
END
) ‘2018-09-07’,
MAX(
CASE ed
WHEN ‘2018-09-08’ THEN
amount
ELSE
0
END
) ‘2018-09-08’,
MAX(
CASE ed
WHEN ‘2018-09-09’ THEN
amount
ELSE
0
END
) ‘2018-09-09’,
MAX(
CASE ed
WHEN ‘2018-09-10’ THEN
amount
ELSE
0
END
) ‘2018-09-10’,
MAX(
CASE ed
WHEN ‘2018-09-11’ THEN
amount
ELSE
0
END
) ‘2018-09-11’,
MAX(
CASE ed
WHEN ‘2018-09-12’ THEN
amount
ELSE
0
END
) ‘2018-09-12’,
MAX(
CASE ed
WHEN ‘2018-09-13’ THEN
amount
ELSE
0
END
) ‘2018-09-13’,
MAX(
CASE ed
WHEN ‘2018-09-14’ THEN
amount
ELSE
0
END
) ‘2018-09-14’,
MAX(
CASE ed
WHEN ‘2018-09-15’ THEN
amount
ELSE
0
END
) ‘2018-09-15’,
MAX(
CASE ed
WHEN ‘2018-09-16’ THEN
amount
ELSE
0
END
) ‘2018-09-16’,
MAX(
CASE ed
WHEN ‘2018-09-17’ THEN
amount
ELSE
0
END
) ‘2018-09-17’,
MAX(
CASE ed
WHEN ‘2018-09-18’ THEN
amount
ELSE
0
END
) ‘2018-09-18’
FROM
(
SELECT
DATE_FORMAT(enter_time, ‘%Y-%m-%d’) ed,
COUNT(waybill_id) amount
FROM
u_operate
WHERE
dept_id = 28
AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(enter_time)
GROUP BY
DAY (enter_time)
ORDER BY
ed DESC
) tb