如何获得NULL出现的最小,最大日期时间

时间:2015-10-11 14:34:08

标签: sql-server datetime null

我有以下数据,我正在考虑一种方法来获取全年每个空值的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;
}

2 个答案:

答案 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的行进行编号(因为其他行正在被过滤掉)。这样,当值之间的差异相等时,行属于相同的范围。