后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 开发类 > 问答问答

SQL统计的难题

2021-07-06 20:20:47问答人已围观

简介 有一个表。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CREATE TABLE HeathTracker<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp; &nbs

有一个表。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CREATE TABLE HeathTracker<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [ItemID] [int] NOT NULL IDENTITY(1, 1),<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [CreatedDateTime] [datetime] NOT NULL,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Height] [float] NOT NULL,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Weight] [float] NOT NULL,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Note] [ntext] NOT NULL<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; )<br>用来存储每一天的身高和体重记录,有可能一天有几条记录,有可能这一天完全没有记录。<br><br>我们可以按周统计这些记录,希望通过一个存储过程实现这样效果:比如按周统计,那么SQL返回的记录是从查询的当天和前6天的记录,如果某一天没有记录,不能不返回记录,而是返回一个Height, Weight, Notes为空,日期为那一天的记录。<br><br>我们可以用<br>CreatedDateTime &gt; GETDATE() and CreatedDateTime &lt; DATEADD(day, 6, GETDATE())<br>来查询当天到前6天的记录,但问题是这样如果7天中的某一天没有记录的情况,就会把这一天忽略,而不是自动补充一个。<br><br>我想到可以用循环来做,针对每一天做循环,如果有数据就返回,如果没有,自动填充Height, Weight, Notes并返回。<br><br>不知哪位知道如何写这个SQL存储过程。<br>

最佳答案:1:其实我感觉没有那么复杂。我们只关心他们的差就可以了。 --variables DECLARE @t table(ItemId int identity,CreatedTime datetime,height float,weight float,note ntext) DECLARE @i int --prepare data SET @i=1 WHILE @i<12 BEGIN INSERT INTO @t select DATEADD(day,@i,GETDATE()),@i,@i,'test'+CAST(@i as nvarchar(4000)) SET @i=@i+1 END --add mutiple data INSERT INTO @t select DATEADD(day,3,GETDATE()),4,4,'test'+CAST(4 as nvarchar(4000)) --delete one data delete @t where Itemid=4 --display all SELECT * FROM @t DECLARE @param datetime SEt @param=DATEADD(day,3,GETDATE()) SELECT *,DateDiff(day,CreatedTime,@param) as interval FROM @t --1 2008-08-28 09:29:51.810 1 1 test1 2 --2 2008-08-29 09:29:51.810 2 2 test2 1 --3 2008-08-30 09:29:51.810 3 3 test3 0 --5 2008-09-01 09:29:51.810 5 5 test5 -2 --6 2008-09-02 09:29:51.810 6 6 test6 -3 --7 2008-09-03 09:29:51.810 7 7 test7 -4 --8 2008-09-04 09:29:51.810 8 8 test8 -5 --9 2008-09-05 09:29:51.810 9 9 test9 -6 --10 2008-09-06 09:29:51.810 10 10 test10 -7 --11 2008-09-07 09:29:51.810 11 11 test11 -8 --12 2008-08-30 09:29:51.810 4 4 test4 0

文章来源:https://q.cnblogs.com/q/2590/

Tags:数据库 SQLServer 

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)

相关文章

后台-插件-广告管理-内容页广告位三(手机)
后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计90162篇文章
  • 浏览统计10086次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们