首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Null、Zero和Constant数据的SQL查询

Null、Zero和Constant数据的SQL查询
EN

Stack Overflow用户
提问于 2013-06-28 01:30:19
回答 1查看 373关注 0票数 0

我有一个查询,我只想修改它(这个查询不是我写的)。

代码语言:javascript
复制
SELECT  CAST(DATEPART(yyyy, UTCTimeStamp) AS VARCHAR(4)) + '-'
        + CAST(DATEPART(mm, UTCTimeStamp) AS VARCHAR(2)) + '-'
        + CAST(DATEPART(dd, UTCTimeStamp) AS VARCHAR(2)) + ' '
        + CAST(DATEPART(hh, UTCTimeStamp) AS VARCHAR(2)) + ':00:000 - '
        + CAST(DATEPART(yyyy, UTCTimeStamp) AS VARCHAR(4)) + '-'
        + CAST(DATEPART(mm, UTCTimeStamp) AS VARCHAR(2)) + '-'
        + CAST(DATEPART(dd, UTCTimeStamp) AS VARCHAR(2)) + ' '
        + CAST(DATEPART(hh, UTCTimeStamp) AS VARCHAR(2)) + ':45:000' AS HourTime ,
        SUM(CASE WHEN ElapsedValue IS NULL THEN 1
                 ELSE 0
            END) AS NoData ,
        SUM(CASE WHEN ElapsedValue = 0 THEN 1
                 ELSE 0
            END) AS ZeroData
FROM    tblLive_TrendLog_15Min
WHERE   ISNULL(ElapsedValue, 0) = 0
GROUP BY CAST(DATEPART(yyyy, UTCTimeStamp) AS VARCHAR(4)) + '-'
        + CAST(DATEPART(mm, UTCTimeStamp) AS VARCHAR(2)) + '-'
        + CAST(DATEPART(dd, UTCTimeStamp) AS VARCHAR(2)) + ' '
        + CAST(DATEPART(hh, UTCTimeStamp) AS VARCHAR(2)) + ':00:000 - '
        + CAST(DATEPART(yyyy, UTCTimeStamp) AS VARCHAR(4)) + '-'
        + CAST(DATEPART(mm, UTCTimeStamp) AS VARCHAR(2)) + '-'
        + CAST(DATEPART(dd, UTCTimeStamp) AS VARCHAR(2)) + ' '
        + CAST(DATEPART(hh, UTCTimeStamp) AS VARCHAR(2)) + ':45:000'

当我运行此查询时,它将显示:

代码语言:javascript
复制
HourlyTime                          ZeroData       NULL    
2013-6-8 23:00:000 - 2013-6-8 23:45:000 0   40    
2013-6-8 3:00:000 - 2013-6-8 3:45:000   0   52    
2013-6-8 7:00:000 - 2013-6-8 7:45:000   0   52    
2013-6-9 3:00:000 - 2013-6-9 3:45:000   0   52    
2013-6-9 4:00:000 - 2013-6-9 4:45:000   0   52    
2010-1-1 12:00:000 - 2010-1-1 12:45:000 0   36    
2010-1-1 13:00:000 - 2010-1-1 13:45:000 0   27    
2010-1-1 15:00:000 - 2010-1-1 15:45:000 0   30

基本上,它每小时计算一次零值和空值。如果您想了解更多信息,请访问链接:SQL Programming combining 4 rows into 1 and adding 3 columns

现在,我只想向该查询添加另一列,该列将计算是否有任何常量值,然后只显示常量值的数量(应该介于0和3之间)例如,如果2013-05-4 10:30处的值与2013-05-4 10:15处的值相同,则ConstantData列中的值应该为1。基本上,每15分钟将该值与前一个值进行比较。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-28 01:53:32

我相信这是一个重复的问题,但我只想指出,使用SQL 2012,您可以使用FORMAT函数极大地简化查询:

代码语言:javascript
复制
SELECT  FORMAT(UTCTimeStamp ,'yyyy-MM-dd hh:00:000 - yyyy-MM-dd hh:45:000 ')AS HourTime ,
        SUM(CASE WHEN ElapsedValue IS NULL THEN 1
                 ELSE 0
            END) AS NoData ,
        SUM(CASE WHEN ElapsedValue = 0 THEN 1
                 ELSE 0
            END) AS ZeroData
FROM    tblLive_TrendLog_15Min
WHERE   ISNULL(ElapsedValue, 0) = 0
GROUP BY FORMAT(UTCTimeStamp ,'yyyy-MM-dd hh:00:000 - yyyy-MM-dd hh:45:000 ')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17349675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档