1

日付、時間、データで構成されるテーブルからデータを計算したいと思います。テーブル内には多くのデータがあります。時間はデータベースのintデータ型であり、その他(DATEなど)はデータ型varcharです。 。例は次のとおりです。

DATE       hour  data1  data2
-------------------------------
01/01/2010  1    10860  1234    
01/01/2010  2    10861  1234    
01/01/2010  3    10862  1234    
01/01/2010  4    10863  567   
01/01/2010  5    10864  458    
02/01/2010  1    10865  3467    
02/01/2010  2    10866  7890    
02/01/2010  3    10867  863    
02/01/2010  4    10868  0    
02/01/2010  5    10868  698  
03/01/2010  1    10868  4693  
03/01/2010  2    10868  7853  
03/01/2010  3    10868  5987
....................etc

上記のデータから。日付:2010年1月1日、時間:2から翌日までのデータを合計したい日付:2010年2月1日、時間:1、そしてもちろん日付:2010年2月1日、時間:2から現在まで:2010年3月1日、時間:1および残りのデータ..データ結果の出力は次のようになります。

DATE           sdata1  sdata2
-------------------------------
01/01/2010     54315   6960    
02/01/2010     54337   14144    
03/01/2010     21736   13840
...................etc

date、data1、data2のデータ型はvarcharですが、timeはdatatypeintです。

sdata1とsdata2はデータの合計であり、今日の時間:2から翌日の時間:2までの状態でこれらのデータを合計する他の方法はありますか?どうもありがとうございました..ありがとう..

これらのデータは、PLCデータの一括挿入から得られます。

これが私自身の解決策ですが、うまくいきません!!

(CONVERT(datetime、date、105)> = CONVERT(datetime、date、105)and CONVERT(int 、hour)> = 2)and(CONVERT(datetime、date、105)<= DATEADD(day、1、CONVERT(datetime、date、105))and CONVERT(int、hour)<2)and month(CONVERT(datetime 、Date、103))= '01'およびyear(CONVERT(datetime、Date、103))= '2010'

誰かが私がこれを理解するのを手伝ってください...私の脳は破裂しています...@@

4

2 に答える 2

1

どうぞ

set dateformat dmy
declare @t table(DATE  date,     hour int,  data1  int, data2 int)
insert into @t
select '01/01/2010',  1,    10860,  1234     union all
select '01/01/2010',  2,    10861,  1234     union all
select '01/01/2010',  3,    10862,  1234     union all
select '01/01/2010',  4,    10863,  567    union all
select '01/01/2010',  5,    10864,  458     union all
select '02/01/2010',  1,    10865,  3467     union all
select '02/01/2010',  2,    10866,  7890     union all
select '02/01/2010',  3,    10867,  863     union all
select '02/01/2010',  4,    10868,  0     union all
select '02/01/2010',  5,    10868,  698   union all
select '03/01/2010',  1,    10868,  4693   union all
select '03/01/2010',  2,    10868,  7853   union all
select '03/01/2010',  3,    10868,  5987 

select dateadd(day,case when hour>1 then 1 else 0 end,date),
sum(data1),sum(data2) 
from @t
group by dateadd(day,case when hour>1 then 1 else 0 end,date)
于 2012-07-25T08:42:03.383 に答える
0

欲望の結果はこのようになるはずです

日付sdata1sdata2

2010年1月1日543156960
2010年2月1日54337141442010年3月
1日2173613840
...................など

しかし、クエリから.itはうまく機能します...ありがとうございます。最終結果は次のようになります。

日付sdata1sdata2

2010年2月1日543156960 2010年3月1
日5433714144 2010年4
月1日2173613840
...................など

つまり、クエリは2010年1月1日から2010年2月1日までのデータを合計し、2010年2月1日の出力を行います。

于 2012-07-25T09:23:12.417 に答える