翌朝の午前5時から午前5時までの最大値を照会しようとしています。私はまた、結果にクエリの日付の開始を持っていると思います。ここ最大値と返された日付を照会する方法
は、私がこれまで
Select Max(Value) as RWQ22003DTDDS from History
WHERE Datetime>='2009-08-21 05:00:00'
AND Datetime<='2009-08-22 05:00:00' and Tagname ='RWQ22003DTDDS'
私は結果にあるように、「2009-08-21」の日付を希望しているものです。
datetime, value
------------------
2008-08-21, 2216
2008-08-20, 4312
など と前の7日のためにこれを行うには
UPDATE:
Date RWQ22003DTDDS
------------------- ----------------------
Aug 21 2009 5:00AM 3586
Aug 20 2009 5:00AM 7233
Aug 19 2009 5:00AM 9099
Aug 18 2009 5:00AM 9099
Aug 17 2009 5:00AM 8909
Aug 16 2009 5:00AM 8516
Aug 15 2009 5:00AM 8064
Aug 14 2009 5:00AM 7437
:
ここで私は
declare @dec int
declare @SqlQry as varchar(4000)
declare @dd as nvarchar(50)
declare @ResolvedQry as varchar(4000)
set @dec = 0
set @SqlQry =''
WHILE (@dec <= 7)
BEGIN
set @dd = cast(datepart(mm,getdate()[email protected])as nvarchar) +'/'+
cast(datepart(dd,getdate()[email protected])as nvarchar) +'/'+
cast(datepart(yyyy,getdate()[email protected]) as nvarchar)+' 06:00:00'
set @ResolvedQry = ' Select cast( convert(datetime,'''[email protected]+''',102) as datetime) as [Date],
Max(Value) as RWQ22003DTDDS from History
WHERE Datetime>='''+ convert(varchar, dateadd(mi,5,convert(datetime,@dd,102))) +
''' and Datetime<='''+ convert(varchar, dateadd(mi,-5,convert(datetime,@dd,102)+1)) +'''
and Tagname =''RWQ22003DTDDS'''
if(@dec <7)
begin
set @ResolvedQry [email protected] + ' union'
end
set @SqlQry = @SqlQry + @ResolvedQry
set @dec = @dec + 1
END
set @SqlQry ='select * from (' + @SqlQry + ') as dt order by [Date] desc'
print @SqlQry
exec(@SqlQry)
結果を思い付いた別のapprochです
コメント?
この質問には詳細が不十分です。関係するテーブルのスキーマと、いくつかの同じデータと期待される出力が、質問に完全に答えるために必要です。 – Welbog
あなたは本当にここで詳しく述べる必要があります。あなたは何に問題がありますか? – Jimmeh
使用しているデータベースのスキーマは何ですか? – BobBrez