1

私はSQLプログラミングに非常に慣れていません。毎週の時間間隔で情報を取得できるように、毎月のランタイムレポートを変更しようとしています。私のコードは、開始時刻と終了時刻が同じ月にあるときに0を出力するだけです。理由がわかりません。

Function TagCount ( Tag1Name char(24), Tag1Cond integer, Tag2Name char(24), Tag2Cond integer, StartTime timestamp, EndTime timestamp)
local count real;

count = (select count(*) from
(SELECT NAME,TS,VALUE AS V1VALUE FROM HISTORY WHERE (NAME = Tag2Name)
AND (PERIOD = '0:00:15')
AND (REQUEST='1')
AND (STEPPED='1')
AND TS between StartTime  and EndTime  JOIN
(SELECT NAME,TS,VALUE AS F1VALUE FROM HISTORY WHERE (NAME = Tag1Name)
AND (PERIOD = '0:00:15')
AND (REQUEST='1')
AND (STEPPED='1')
AND TS between StartTime  and EndTime ) USING (TS)) where V1VALUE = Tag2Cond and F1Value = Tag1Cond);

Return(count);
END
local
    starttime timestamp,
    run_hours real,
    i integer,
    endtime timestamp;

starttime = '01-JUN-10 00:00:00.0';
endtime = '12-AUG-10 00:00:00.0';

write ',';
FOR i=1 TO 21 DO

run_hours = 1/240.0*TagCount('runningtag',1,'producttag',i,starttime,endtime);
IF run_hours IS NULL THEN run_hours = 0; END
write run_hours;            
END

サンプルデータ:

NAME TS F1VALUE
runningtag 16-AUG-10 15:35:30.1 1
runningtag 16-AUG-10 15:35:45.1 1
runningtag 16-AUG-10 15:36:00.11
runningtag 16-AUG-10 15:36:15.1 1
ランニングタグ16-AUG-1015:36:
30.11ランニングタグ16-AUG-1015:36:
45.11ランニングタグ16-AUG-1015:37:00.1 1

NAME TS F1VALUE productcode
16-AUG-10 15:35:30.1 13
productcode 16-AUG-10 15:35:45.1 13
productcode 16-AUG-10 15:36:00.1 13 productcode
16-AUG-10 15:36:15.1 13製品
コード 16-AUG-1015:36:30.113製品コード16-AUG-1015:36:45.113製品コード16-AUG-1015:37:00.1
13

実行時間を数時間で見積もろうとしています。明確にするために。

4

1 に答える 1

1

まず、SQL を次のように単純化してみてください。

SELECT count(*)
  FROM history h
 WHERE h.period = '0:00:15'
       AND h.request = '1'
       AND h.stepped = '1'
       AND h.ts BETWEEN StartTime AND EndTime
       AND (   (h.name = Tag1Name AND h.value = Tag1Cond) 
            OR (h.name = Tag2Name AND h.value = Tag2Cond));

それ以外では、同じ月に 2 つの日付の値が得られない理由がわかりません。データに月次エントリのみが含まれている場合を除きますが、そうではないと思います。

履歴テーブルからいくつかのサンプル データを投稿できますか?

于 2010-08-16T19:21:14.703 に答える