2017-03-24 5 views
-6

私はSQLの新機能です。 私に混乱を招くものがありますが、1分あたりのデータがありますが、1時間または2時間ごとに1行しか必要ありません。たとえば、前日のデータを選択すると、1440行が表示されます。グラフを作成するために、行数を減らす必要があります。 ありがとうございます。1時間に1行のデータを選択するにはどうすればよいですか?

私はこのクエリを使用します。

select [Value],[Time] from [AbsoluteData] where [Sensor] = '5100' and [Time] >= dateadd(day,datediff(day,1,GETDATE()),0) AND[Time] < dateadd(day, datediff(day, 0, GETDATE()), 0)

私が得た:

クエリ以下enter image description here

+7

は「ここに私の車の絵だ何かが正しく動作していないことを修正します。。。」 *(実際のコードを投稿してください)* [これは別の参考資料です](https://spaghettidba.com/2015/04/24/how- post-at-at-post-at-a-public-forum /) – Siyual

答えて

0

をすることができます

SELECT * FROM TableName WHERE myTime > DATEADD(HOUR, -1, GETDATE()) 
0

あなたのテーブルから最後の1時間分のデータを返します。 1時間あたりの行を選択このようなrow_number()をINGの:

select t.* 
from (select t.*, 
      row_number() over (partition by cast(datetimecol as date), datepart(hour, datetimecol) 
           order by datetimecol 
           ) as seqnum 
     from t 
    ) t 
where seqnum = 1; 

私はあなたの画像を読み取ることができない、あなたがサンプルクエリやサンプルデータを持っていないので、これは一般的な名前を使用しています。

0

データが毎分に低下し、あなただけの1つの所与の範囲(最後の時間または最後の日)内には、ちょうど範囲に行を制限し、1を選択したい場合:

select top 1 
     [Value], [Time] 
    from [AbsoluteData] 
where [Sensor] = '5100' 
    and cast(Time as date) = cast(dateadd(day, -1, getdate()) as date) 
order by Time desc; 

(最後の1昨日)

か:

set rowcount 1; 

select [Value], [Time] 
    from [AbsoluteData] 
where [Sensor] = '5100' 
    and cast(Time as date) = cast(dateadd(day, -1, getdate()) as date) 
order by Time desc; 

set rowcount 0; 
関連する問題