请问一下这种sql该怎么写

XiaoYi96 2020-05-06 02:23:01
我想取4月16到4月20这个时间范围内的数据,按日期分开。


目前sql是这样写的:select sum(sl)AS'sl',riqi from biao where riqi>='2020-04-16' AND riqi<='2020-04-20' group by riqi

返回结果是:

sl riqi

10 20200416
16 20200417
19 20200419

但是我想要这种结果,当天啥也没有的话数量为0 ,sql该怎么写?

sl riqi

10 20200416
16 20200417
0 20200418
19 20200419
0 20200420
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-05-06
  • 打赏
  • 举报
回复
动态行转列。 数据中心显示的 Null,你可以直接通过 isnull(字段,0)显示 https://blog.csdn.net/hanjun0612/article/details/56673854
u014480075 2020-05-06
  • 打赏
  • 举报
回复
这个完全可以在后端代码里判断下那一天数据是不是为空。要是写在sql里看需求可以整一些固定得写法,比如建一个表存放一年得日期,然后关联下
wanghui0380 2020-05-06
  • 打赏
  • 举报
回复
master..spt_values 利用这个玩意其实也可以,但是和sys.objects一样,长度有限 无限其实也行,多高俩笛卡尔积就行 不过俺们可以当一个问题讨论,但不建议你们把这些当宝贝记着
wanghui0380 2020-05-06
  • 打赏
  • 举报
回复
时序统计里面的“下采样 补0” 如果是opentsdl这样的时序数据库直接写下采样规则就好 如果是传统关系数据库 建议写成CTE或存储过程 非要折腾成一条语句,那属于奇技淫巧范围,可以讨论,但不推荐。 比如 SELECT x = ROW_NUMBER() OVER (ORDER BY s1.[object_id]) FROM sys.objects AS s1 这样的语句我们能产生一个1,2,3,4这样的序列,在配合时间函数我们能自动产生 1楼的 日期表。 但是还是那句话,那属于奇技淫巧范围,可以讨论,但不推荐
ManBOyyy 2020-05-06
  • 打赏
  • 举报
回复
嵌套啊 select * from (select * from 日期表 where 日期 between datefmd and ateto)a left join (select sum(sl)AS'sl',riqi from biao where riqi between '2020-04-16' AND '2020-04-20' group by riqi)b on a.日期=b.riqi

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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