有Ta表(a,b,c)Tb表(d,e,f),
Ta表的查询结果进行 (比如a>0 and b<0)计算结果为re1= a*a+b 需要放到Tb中查询,必须满足 
  (d+f<re1<d-e) 的第一个结果。有没有一次解决的SQL语句。SQL 复合语句

解决方案 »

  1.   

    a b c re1
    -1 1 合理 2
    -45 -5 不合理 2020
    27 0 不合理 729
    -36 45 合理 1341
    -8 65 合理 129
    29 55 不合理 896
    -100 35 合理 10035
    -952 -20 不合理 906284
    -25 -62 合理 563
    56 30 不合理 3166
    -26 80 合理 756
    对于计算结果,需要进行比对另外Tb表进行统一化:
    SpeedID SpeedStep SpeedRange1 SpeedRange2
    1 1500          200                 10000
    2 1000     130                 300
    3 750     80                 120
    4 600     50                 70
    5 500     40                 50
    6 428.6     29                 31
    7 375     25                 25
    8 333     23                 17
    9 300     20                 10
    10 272.2     13                 8
    11 250     20                 10
    12 214.3     14                 16
    13 187.5     18                 13
    14 166.7     17                 4
    15 150     10                 0
    SpeedID是 主键,不参与计算。
    SpeedStep 是基线,SpeedRange1是底线,SpeedRange2是上线。
    上面re1的计算结果在上述表范围内:小于基线+上限,大于基线+底线。
    然后返回基线值(SpeedStep)。
      

  2.   

    前面的举例是简化处理,真正的问题如下,下面是通过查询形成的计算表:表格中的数据如下关系:
    【转轮直径】是根据【水轮机功率】、【流量】计算出来的,
    【计算转速】是根据【转轮直径】计算出来的,计算都是唯一对应关系
    但实际的转速不可能是这种带小数的数值,必须是规定的数值,数值必须是下面表格中的唯一数值,需要根据【计算转速】数值进行向规定值进行挂靠,不知道这里有没有一口气就能进行计算分别的SQL语句。
    而不必分成多个SQL查询语句进行相互传递参数。