基于图
想要实现:
对于第二采油作业区我只显示出两条数据即2012-07-03 09:00:00.00,2012-07-03 10:00:00.00两个点数据
我还想算一个值就是对于每一条数据的(InPipePressure×AccumulateWater)再加上下一条同一个点的数据的(InPipePressure×AccumulateWater)等等最后得到一个sum(InPipePressure×AccumulateWater)同一个点的sum(AccumulateWater)
avg(sum(InPipePressure×AccumulateWater)/sum(AccumulateWater))
最后想要展示的就是
第二采油作业区  2012-07-03 09:00:00.000 (((67*0.4)+(45*0.4)+(80*0.4)+(57*0.4))/(67+45+57))(显示具体算出来的值)
第二采油作业区  2012-07-03 10:00:00.000 (((58*0.4)+(45*0.4)+(79*0.4)+(57*0.4))/(56+45+57))(显示具体算出来的值)

解决方案 »

  1.   

    测试的数据
    OperationAreaName  StationName ReceiveTime        InPipePressure AccumulateWater
    第二采油作业区 枣三注水站 2012-07-03 09:00:00.000 0.4 67
    第二采油作业区 枣三注水站 2012-07-03 10:00:00.000 0.4 58
    第二采油作业区 枣四注水站 2012-07-03 09:00:00.000 0.4 45
    第二采油作业区 枣四注水站 2012-07-03 10:00:00.000 0.4 45
    第二采油作业区 枣五注水站 2012-07-03 09:00:00.000 0.4 80
    第二采油作业区 枣五注水站 2012-07-03 10:00:00.000 0.4 79
    第二采油作业区 家五接转站 2012-07-03 09:00:00.000 0.4 57
    第二采油作业区 家五接转站 2012-07-03 10:00:00.000 0.4 56测试的数据想要的结果
    第二采油作业区 2012-07-03 09:00:00.000 (((67*0.4)+(45*0.4)+(80*0.4)+(57*0.4))/(67+45+57))(显示具体算出来的值)
    第二采油作业区 2012-07-03 10:00:00.000 (((58*0.4)+(45*0.4)+(79*0.4)+(57*0.4))/(56+45+57))(显示具体算出来的值)
    想要的结果
      

  2.   


    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
    BEGIN
    DROP TABLE tba
    END
    GO
    CREATE TABLE tba
    (
    OperationAreaName VARCHAR(100),
    StationName VARCHAR(100),
    ReceiveTime VARCHAR(100),
    InPipePressure FLOAT,
    AccumulateWater INT
    )
    GO
    INSERT INTO tba
    SELECT '第二采油作业区', '枣三注水站', '2012-07-03 09:00:00.000', 0.4, 67 UNION
    SELECT '第二采油作业区', '枣三注水站', '2012-07-03 10:00:00.000', 0.4, 58 UNION
    SELECT '第二采油作业区', '枣四注水站', '2012-07-03 09:00:00.000', 0.4, 45 UNION
    SELECT '第二采油作业区', '枣四注水站', '2012-07-03 10:00:00.000', 0.4, 45 UNION
    SELECT '第二采油作业区', '枣五注水站', '2012-07-03 09:00:00.000', 0.4, 80 UNION
    SELECT '第二采油作业区', '枣五注水站', '2012-07-03 10:00:00.000', 0.4, 79 UNION
    SELECT '第二采油作业区', '家五接转站', '2012-07-03 09:00:00.000', 0.4, 57 UNION
    SELECT '第二采油作业区', '家五接转站', '2012-07-03 10:00:00.000', 0.4, 56GOSELECT OperationAreaName,ReceiveTime,SUM(InPipePressure * AccumulateWater) / SUM(AccumulateWater * 1.0) AS value
    FROM tba
    GROUP BY OperationAreaName,ReceiveTime
      

  3.   


    --> 测试数据:[test]
    if object_id('[test]') is not null 
    drop table [test]
    create table [test](
    [OperationAreaName] varchar(14),
    [StationName] varchar(10),
    [ReceiveTime] datetime,
    [InPipePressure] numeric(2,1),
    [AccumulateWater] int
    )
    go
    insert [test]
    select '第二采油作业区','枣三注水站','2012-07-03 09:00:00.000',0.4,67 union all
    select '第二采油作业区','枣三注水站','2012-07-03 10:00:00.000',0.4,58 union all
    select '第二采油作业区','枣四注水站','2012-07-03 09:00:00.000',0.4,45 union all
    select '第二采油作业区','枣四注水站','2012-07-03 10:00:00.000',0.4,45 union all
    select '第二采油作业区','枣五注水站','2012-07-03 09:00:00.000',0.4,80 union all
    select '第二采油作业区','枣五注水站','2012-07-03 10:00:00.000',0.4,79 union all
    select '第二采油作业区','家五接转站','2012-07-03 09:00:00.000',0.4,57 union all
    select '第二采油作业区','家五接转站','2012-07-03 10:00:00.000',0.4,56
    go
    select 
        OperationAreaName,
        ReceiveTime,
        sum(InPipePressure*AccumulateWater)/SUM([AccumulateWater]) as Total
    from 
        test
    group by
        OperationAreaName,
        ReceiveTime
    /*
    OperationAreaName ReceiveTime Total
    -----------------------------------------------------------------
    第二采油作业区 2012-07-03 09:00:00.000 0.400000
    第二采油作业区 2012-07-03 10:00:00.000 0.400000
    */
      

  4.   

    InPipePressure为固定值
    SUM(InPipePressure * AccumulateWater) / SUM(AccumulateWater * 1.0)
    = InPipePressure * SUM(AccumulateWater * 1.0) / SUM(AccumulateWater * 1.0)
    = InPipePressure
    有意义么
      

  5.   

    我只是随便从数据库截了一段数据,并非所有的InPipePressure是固定的在这谢谢 TravyLee 了。
      

  6.   

    这个跟你的InPipePressure没好大关系,语句只是在对他进行聚合运算。
    会影响结果的是你的group by后面的字段。
    还有你需要选择时间的话可以在where后面加条件