有三个表
TagToDB 【id tagname】
Flow    【source target tagname】
TagValue【id clock val】
一个target与一个source之间建立一个Flow,对应地产生一个id和tagname;但一个target对应多个source。
每个整点记录一次val,求一个月内某个target在某个整点的val值之和。

解决方案 »

  1.   

    假设 clock 为 Datetime 类型。
    select
        A.tagname,sum(C.val)
    from
        TagToDB A,Flow B,TagValue C
    where
        A.tagname=B.tagname and A.id=C.id
        and
        A.tagname=@tagname
        and
        datediff(mm,clock,@date)=0
        and
        datepart(hh,clock)=@hour
      

  2.   

    ??
    select sum(val) from TagToDB a inner join Flow b on a.tagname=b.tagname inner join TagValue c on a.id=c.id where target='汽油个target' and convert(varchar(7),clock,112)='某个月' and right('0'+ltrim(datepart(hh,clock)),2)='某个时间点'
      

  3.   

    感谢libin_ftsafe的回复,很清楚和简洁。但我一直在想如何返回一个结果集,即:所有target在每个整点的val值之和,
    想迷糊了。我是新手。^_^