sql 连续数值中的空缺值 间隔值 行转列
表结构如下:
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千的数据量,所以这样的代码也不是办法。
代码如下:
请各位大神帮忙想想办法!
------最佳解决方案--------------------你如果实在想用SQL做报表的话,就先把中间结果存到临时表里,再把临时表行转列
------其他解决方案--------------------
嗯,看来只能借助中间表了,这样一句sql写出来倒是省事,但是效率实在是太差了。
您觉得中间表该怎么设计呢?
您的意思是还有其他方式做报表是吧,能具体说一下吗?谢谢!