SQL日期问题,怎么样按记录里的日期进行分类,15天一档

兄弟们,打扰一下,SQL日期问题,怎么样按记录里的日期进行分类,15天一档
最新回答
青春的约定

2024-05-01 09:26:43

不知道你是什么数据库,只能写个意思,具体的内容要你自己搞定。
其实就是把日期字段截取一下,如果日期本身没办法截取,那就转换一下。比如如果是oracle那么可以用to_char转换为字符型,然后再截取。如果担心1月和10月截取重复,那就多截取一位,或者查找第二个/字符的位置截取。
截取完成后,在用截取后的日期和客户分组,金额汇总求和就可以了。
我比较熟悉oracle,我用oracle的写法尝试这写一个,如果不是oracle,那么你就要自己找找类似的了。(日期也可以直接截取,不过好长时间没写忘记怎么写了,就写一个转换的吧)
select
substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1)
月份,客户,sum(金额汇总)
from
table
group
by
substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1)
,客户
风中的歌声

2024-05-01 04:30:53

设表格式为:tablename(id
int,qty
decimal(12,4),datex
datetime)
则按DATEX字段以15天为周期对qty进行汇总的语句如下:
--测试通过:
select
dateadd(day,dayx*15,0)
as
[区间开始日期],qty
as
[15日合计],countx
as
汇总行数
from
(
select
floor(datediff(day,0,datex)/15.0)
as
dayx,sum(qty)
as
qty,count(1)
as
countx
from
tablename
group
by
floor(datediff(day,0,datex)/15.0)
)
a
--请注意,日期0表示1900-01-01,该例中的几个零就是指起始计算日期,这里是从1900-01-01为基准计算相距为15天的日期,您也可以换成其它日期,如2008-01-01,表示开始计算时间为08年1月1日
↘琪子

2024-05-01 00:34:16

创建一个比你目标数据库表多一个字段的"暂存表"
把你的数据插入到这个"暂存表"
里面,然后按日期在那个多出来的字段里面把那些"15天"的日期进行标记.然后就可以分类查询了.
那些"15天"的日期进行标记的方法,可以用substring
截取你的日期中的"日"然后
用case语句
update
那个多出来的字段.