请问一个SQL,急呀

zhangxw2008 2003-10-19 04:16:48
有一个字段是日期型的。
如这样:
2003-10-19 15:00:00
2003-10-01 15:00:00
2003-10-02 15:00:00
2003-10-20 15:00:00

我想按半月分组。取最近的5个半月的。
SQL要怎么写
...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
playyuer 2003-10-19
  • 打赏
  • 举报
回复
select Top 9 case when datefield < dateadd(day,-day(datefield) + 16 ,datefield)
then dateadd(day,-day(datefield) + 1 ,datefield)
else dateadd(day,-day(datefield) + 16 ,datefield) end as F
,count(*)
from dt
--下面是关键
group by case when datefield < dateadd(day,-day(datefield) + 16 ,datefield)
then dateadd(day,-day(datefield) + 1 ,datefield)
else dateadd(day,-day(datefield) + 16 ,datefield) end
order by F desc
zarge 2003-10-19
  • 打赏
  • 举报
回复
select top 9 case
when datefield < dateadd(day, -day(datefield) + 16 ,datefield)
then dateadd(day,-day(datefield) + 1 ,datefield)
else dateadd(day,-day(datefield) + 16 ,datefield)
end as a, count(*)
from dt
group by case
when datefield < dateadd(day, -day(datefield) + 16 ,datefield)
then dateadd(day,-day(datefield) + 1 ,datefield)
else dateadd(day,-day(datefield) + 16 ,datefield)
end
order by a desc
orcale 2003-10-19
  • 打赏
  • 举报
回复
declare @t table(d datetime)
insert into @t select '2003-10-19 15:00:00'
union select '2003-10-01 15:00:00'
union select '2003-10-02 15:00:00'
union select '2003-10-20 15:00:00'
select * from @t where datediff(month,d,getdate())<=5 and day(d)<=15 union all
select * from @t where datediff(month,d,getdate())<=5 and day(d)>15
playyuer 2003-10-19
  • 打赏
  • 举报
回复
select count(*)
from dt
group by case when datefield < dateadd(day,-day(datefield) + 16 ,datefield) then dateadd(day,-day(datefield) + 1 ,datefield)
else dateadd(day,-day(datefield) + 16 ,datefield) end
welyngj 2003-10-19
  • 打赏
  • 举报
回复
select top 5 * from tbl where datediff(day,column_name,getdate())<=30

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧