【发布时间】:2018-12-18 17:03:38
【问题描述】:
谁能更正这个查询:
select distinct
v.DriverName,t.KM_W1,t.KM_W2,t.KM_W3,t.KM_W4,t.KM_W5,(t.KM_W1+t.KM_W2+t.KM_W3+t.KM_W4+t.KM_W5) Total
from
(select
DriverName,
SUM( case when TodayDate >= '01-07-2018' and TodayDate <= '07-07-2018' then PaidKM else 0 end) KM_W1,
SUM( case when TodayDate >= '07-07-2018' and TodayDate <= '14-07-2018' then PaidKM else 0 end) KM_W2,
SUM( case when TodayDate >= '14-07-2018' and TodayDate <= '21-07-2018' then PaidKM else 0 end) KM_W3,
SUM( case when TodayDate >= '21-07-2018' and TodayDate <= '28-07-2018' then PaidKM else 0 end) KM_W4,
SUM( case when TodayDate >= '28-07-2018' and TodayDate <= '31-07-2018' then PaidKM else 0 end) KM_W5
from
Traveling
group by
DriverName) t
inner join
Traveling v on t.DriverName = v.DriverName
where
TodayDate >= '01-07-2018' and TodayDate <= '31-07-2018'
上面的查询说明:我得到了所有星期的数据PaidKM 哪个司机在整整一个月里得到了。例如开始日期的月份是01-07-2018,结束日期是31-07-2018,涵盖整个月份#07。但是当我更改月份时,它总是给我相同的结果。
以上 GIF 的查询实现:我已经在 java 中实现了这个查询,当我从组合框中更改月份但后端查询始终给出所有记录而不是不同月份的结果。 p>
上图是数据库中的Traveling 表。
当我更改不同的月份时,我如何才能获得结果?以及我如何更正此查询以使其工作。
任何帮助将不胜感激!提前谢谢!
【问题讨论】:
-
我首先将日期格式更改为 YYYY-MM-DD -- ANSI 和 ISO 标准格式。这能解决你的问题吗?
-
不,我没试过。
-
你试过用
strftime('%W',TodayDate)按周数分组 -
我想更改月份 # 而不是星期 #。
-
这将是日历表的另一个很好的用例。
标签: java sql sqlite join inner-join