我有以下数据,我正在考虑一种方法来获取全年每个空值的max(datetime)
, Datetime Tagname Value
09/18/2015 9:52:50 Tag_1 26670
09/18/2015 9:53:00 Tag_1 26670
09/18/2015 9:53:10 Tag_1 NULL
09/18/2015 9:53:20 Tag_1 NULL
09/18/2015 9:53:30 Tag_1 NULL
09/18/2015 9:55:00 Tag_1 NULL
09/18/2015 9:55:10 Tag_1 NULL
09/18/2015 9:55:20 Tag_1 NULL
09/18/2015 9:55:30 Tag_1 NULL
09/18/2015 9:55:40 Tag_1 NULL
09/18/2015 9:55:50 Tag_1 NULL
09/18/2015 9:56:00 Tag_1 NULL
09/18/2015 9:56:10 Tag_1 NULL
09/18/2015 9:56:20 Tag_1 NULL
09/18/2015 9:56:30 Tag_1 NULL
09/18/2015 9:56:40 Tag_1 NULL
09/18/2015 9:56:50 Tag_1 26821
09/18/2015 9:57:00 Tag_1 26821
。我尝试获取重复值,但我无法对dupes进行分组。有人能指出我正确的方向。
#define GET_BIT(VAR8,IDX) ((VAR8>>IDX) & 1)
int main(void){
unsigned char c=3;
int i;
printf("Bits of char %d: ",c);
for(i=0; i<8;i++){
printf("%d ",GET_BIT(c,i));
}
printf("\n");
return 0;
}
答案 0 :(得分:0)
SELECT MIN([Datetime]) MinDate
,MAX([Datetime]) MaxDate
FROM TableName
WHERE Value IS NULL
答案 1 :(得分:0)
你的问题很不清楚,但我猜你想要弄清楚开始&amp; NULL值的连续范围的结束日期,您可以这样做:
select
min(datetime), max(datetime)
from
(
select Datetime, Value, RN - row_number() over (order by Datetime) as GRP
from
(
select
*, row_number() over (order by datetime asc) as RN
from table1
) X
where
Value is NULL
) Y
group by GRP
SQL Fiddle中的示例。我为您的数据添加了一些值以获得更多范围。
最里面的row_number将对所有行进行编号,外部的row_number只对具有NULL的行进行编号(因为其他行正在被过滤掉)。这样,当值之间的差异相等时,行属于相同的范围。