变态的SQL需求?

nimeide1234567890 2014-06-07 03:14:45
编号 值字段 时间字段
BinNO Reading ReadDate
000001 12.00 2014-02-02 11:03:34.000
000001 2.00 2014-02-23 11:03:34.000
000001 0.00 2014-03-02 11:03:34.000
000001 0.00 2014-03-05 11:03:34.000
000001 0.00 2014-03-09 11:03:34.000
000001 0.00 2014-04-02 11:03:34.000
000001 12.00 2014-05-02 11:03:34.000
...
000002 1.00 2014-01-02 11:03:34.000
000002 0.00 2014-02-02 11:03:34.000
000002 0.00 2014-02-23 11:03:34.000
000002 12.00 2014-03-02 11:03:34.000
000002 22.00 2014-03-05 11:03:34.000
000002 0.00 2014-03-09 11:03:34.000
000002 0.00 2014-04-02 11:03:34.000
000002 7.00 2014-05-02 11:03:34.000
...
000002 9.00 2014-06-02 11:03:34.000
000002 0.00 2014-07-02 11:03:34.000
000002 0.00 2014-07-08 11:03:34.000
000002 0.00 2014-08-02 11:03:34.000
000002 0.00 2014-08-02 11:03:34.000
000002 0.00 2014-09-02 11:03:34.000
000002 7.00 2014-10-02 11:03:34.000
...

要得到的结果是:
(一年中最先为0的是哪一个月,连续几个月一直为0的是哪一月终止,并统计间隔的月数),
然后某个编号在一年中可能有多个为0的月份段,都统计出来,
编号 开始月份 结束月份 月(个)
000001 3 4 2
000002 2 2 1
000002 3 4 2
000002 7 9 3

怎么写SQL?
...全文
924 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
md5e 2014-06-09
  • 打赏
  • 举报
回复
md5e 2014-06-09
  • 打赏
  • 举报
回复
SQL Server 2008 有个函数已经可以实现相邻的两条记录相加减
nimeide1234567890 2014-06-09
  • 打赏
  • 举报
回复
引用 4 楼 myhope88 的回复:
需求还好吧,不是很难
可以帮写一个SQL吗?
myhope88 2014-06-09
  • 打赏
  • 举报
回复
需求还好吧,不是很难
smthgdin_020 2014-06-09
  • 打赏
  • 举报
回复
按照编号分组排序,min月份,max月份,再相减。
  • 打赏
  • 举报
回复
基本上,首先你需要将要统计的“每一个月份”创建一个列表,然后把它跟实际数据的统计表进行(左)外连接,然后选择统计表中“数量为0”的月份。 这里不过是稍微绕了一点,把常见的“统计每个月数量”变成“统计哪些月数量为0”而已。
  • 打赏
  • 举报
回复
在sql中,那个计算叫做统计函数。好好学一下sql吧。
bdmh 2014-06-07
  • 打赏
  • 举报
回复
按编号排序,选出为0的,然后第一条不就是吗

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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