代码之家  ›  专栏  ›  技术社区  ›  fishhead

如何从两个select语句中减去值

  •  4
  • fishhead  · 技术社区  · 16 年前

    我想用一个值减去另一个值。表的架构如下:

       tag, datetime,value
       ------------
       tag1, 2010-1-1 10:10:00, 123
       tag2, 2010-2-2 10:12:00. 321
    
      select * from  
    
      ( (Select    Max(Value) as [Value1] from History WHERE Datetime ='2010-1-1 10:10'       and tagname ='tag1') as v1   -
    
      (  (Select    Max(Value) as [Value2] from History WHERE Datetime ='2010-1-1 10:12'      and Tagname ='tag2')  as v2))
    

    显然我迷路了…我该怎么做。

    谢谢

    4 回复  |  直到 16 年前
        1
  •  8
  •   Matthew Jones    16 年前

    select v1.Value1 - v2.Value2 from  
    
      (Select    Max(Value) as [Value1] from History WHERE Datetime ='2010-1-1 10:10' and tagname ='tag1') as v1   
    
    CROSS JOIN
    
      (  (Select    Max(Value) as [Value2] from History WHERE Datetime ='2010-1-1 10:12'      and Tagname ='tag2')  as v2)
    
        2
  •  1
  •   Andrew Bezzub    16 年前

    @value1 @value2 并将其子结构。

    declare @value1 int, @value2 int
    
    select @value1 = Max(Value) as [Value1] from History WHERE Datetime ='2010-1-1 10:10'       and tagname ='tag1'
    
    select @value2 = Max(Value) as [Value2] from History WHERE Datetime ='2010-1-1 10:12'      and Tagname ='tag2'
    
    select @value1 - @value2
    
        3
  •  0
  •   David Espart    16 年前

    值列的类型是什么?如果它已经是一个整数,只需执行以下操作:

    SELECT 
    
      (Select Max(Value) as [Value1] from History WHERE Datetime ='2010-1-1 10:10'       and tagname ='tag1') as v1   -
    
      (Select Max(Value) as [Value2] from History WHERE Datetime ='2010-1-1 10:12'      and Tagname ='tag2')  as v2
    

        4
  •  0
  •   AaronLS    16 年前
    select h1.value - h2.value
    from History h1
    inner join History h2 on h1.Datetime = '2010-1-1 10:10' and Datetime ='2010-1-1 10:12'