将存储过程的值与最新输入的行和一些固定行进行比较



我创建了一个包含两列的表,该表具有logtime值,例如:

创建表REF_LOGTIME ( LOGTIME1日期时间不为空, LOGTIME2日期时间不为空 )

插入REF_LOGTIME(LOGTIME1,LOGTIME2) 值 ('2014-09-1 07:09:00.000'

,'2014-10-10 07:10:00.000')

我有一个返回日志时间的存储过程,beam_current,st1_vs1_bag1_rb....等等。我想将存储过程中最新输入的行与LOGTIME1和LOGTIME2之间的行进行比较,并且必须仅检索beam_current为 10mA、20mA、30mA 的行......100mA并计算各种袋值之间的差异,即st1_vs1_bag1_rb,st1_vs1_bag2_rb.。只有当beam_current是10mA,20mA...我正在使用 Sql Server 2102。

如果我的理解是正确的,您希望将表中最后插入的行与此表进行比较 REF_LOGTIME 并根据给定条件获取值。您没有提供足够的详细信息,因此我假设您有兴趣从中获取值的表是TableOfValues.下面的查询为您提供了我了解您需要的内容。请检查并让我知道它是否有效。如果需要,可以将其包装在存储的进程中。

SELECT A.LogTime, A.Beam_Current, B.LOGTIME1, B.LOGTIME2
CASE WHEN  (A.Beam_Current / 10) IN (1, 2) 
THEN (A.st1_vs1_bag1_rb - A.st1_vs1_bag2_rb) ELSE NULL END AS DIFF_BAG_VALUES --To check if beam_current is 10mA,20mA
 FROM 
      (
        SELECT TOP 1 ROW_NUMBER() OVER (ORDER BY LogTime) Row_Num,  
        logtime,beam_current,st1_vs1_bag1_rb, st1_vs1_bag2_rb
        FROM [TableOfValues] ORDER BY 1 DESC   --To get the latest entered row 
      )A JOIN REF_LOGTIME B ON A.LOGTIME BETWEEN B.LOGTIME1 AND B.LOGTIME2
    AND B.Beam_Current % 10 = 0 -- To check if beam_current is 10mA,20mA,30mA....100mA

相关内容

  • 没有找到相关文章

最新更新