【问题标题】:Trying to modify a monthly report to a weekly. Aspen Sql试图将每月报告修改为每周报告。阿斯本
【发布时间】:2010-08-16 17:29:19
【问题描述】:

我对 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

样本数据:

命名 TS F1VALUE
运行标签 16-AUG-10 15:35:30.1 1
运行标签 16-AUG-10 15:35:45.1 1
运行标签 16-AUG-10 15:36:00.1 1
运行标签 16-AUG-10 15:36:15.1 1
运行标签 16-AUG-10 15:36:30.1 1
运行标签 16-AUG-10 15:36:45.1 1
运行标签 16-AUG-10 15:37:00.1 1

命名 TS F1VALUE
产品代码 16-AUG-10 15:35:30.1 13
产品代码 16-AUG-10 15:35:45.1 13
产品代码 16-AUG-10 15:36:00.1 13
产品代码 16-AUG-10 15:36:15.1 13
产品代码 16-AUG-10 15:36:30.1 13
产品代码 16-AUG-10 15:36:45.1 13
产品代码 16-AUG-10 15:37:00.1 13

我正在尝试以小时为单位估算运行时间。只是为了澄清。

【问题讨论】:

  • HISTORY 是否按月填充?
  • 我不这么认为。我们使用的数据库软件叫做 Aspen InfoPlus.21。 HISTORY 表由软件创建。

标签: sql aspen


【解决方案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));

除此之外,我不明白为什么您不会在同一个月内获得两个日期的值 - 除非您的数据仅包含每月条目,我猜情况并非如此。

您能否发布一些历史记录表中的示例数据?

【讨论】:

  • 我想我想在代码中添加某种连接语句或其他东西。我是你最后一小时的代码。所以我希望代码计算运行标签为1且产品为13的次数。那应该是240次。每 15 秒一个标签,持续一个小时。您的代码输出 480 ,所以它计算了他们两个。我想知道如何比较这两个表。感谢您的帮助,我认为我对自己想要做什么还不够清楚。
  • 我能够稍微修改您的代码并让它工作。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
相关资源
最近更新 更多