sql 连续数值中的空缺值 间隔值 行转列

勤劳青年 2012-12-01 12:13:15
表结构如下:

ID(自增),BasicId(个体id),DayAge(日龄)

示例数据:

1 1 50

2 1 51

3 1 55

4 1 56

5 1 58

6 1 60

7 1 62

8 2 55

9 2 56

10 2 57

11 2 60

12 2 61

13 2 65

现在想要统计每个个体的不连续天数(只取中间间隔的差值,开区间),从大到小,取前10个。

结果表如下:

BasicId Span1 Span2 Span3 Span4 Span5 Span6......10

1 3 1 1 1 0 0

2 3 2 0 0 0 0

现在这个功能基本实现了,几千条的数据量还可以。。。

但是数据稍微多点的时候就根本hold不住了(20W),需要1个多小时才能跑出来,现在每天会增加3、5千的数据量,所以这样的代码也不是办法。
代码如下:

请各位大神帮忙想想办法!
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
guguda2008 2012-12-01
  • 打赏
  • 举报
回复
你如果实在想用SQL做报表的话,就先把中间结果存到临时表里,再把临时表行转列
勤劳青年 2012-12-01
  • 打赏
  • 举报
回复
引用 1 楼 guguda2008 的回复:
你如果实在想用SQL做报表的话,就先把中间结果存到临时表里,再把临时表行转列
嗯,看来只能借助中间表了,这样一句sql写出来倒是省事,但是效率实在是太差了。 您觉得中间表该怎么设计呢? 您的意思是还有其他方式做报表是吧,能具体说一下吗?谢谢!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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