select A.類型 ,A.厚度 ,B.實際類型
from A表 A
left join B表 B on B.類型=A.類型

解决方案 »

  1.   

    --测试--测试数据
    create table A表(類型 varchar(10),厚度 decimal(5,1))
    insert A表 select '4H',1.1  
    union  all select '4G',1.5create table B表(類型 varchar(10),標准厚度 decimal(5,1),最小厚度 decimal(5,1),比較符1 varchar(10),最大厚度 decimal(5,1),比較符2 varchar(10),實際類型 varchar(10))
    insert B表 select '4H',1.0,0.6,'>=',1.3,'<=','4H1'
    union  all select '4G',1.2,1.0,'>' ,1.8,'<' ,'4G2'
    goselect a.*,b.實際類型
    from A表 a,B表 b
    where a.類型=b.類型
    and
    case b.比較符1 
    when '<'  then case when a.厚度< b.最小厚度 then 1 else 0 end
    when '<=' then case when a.厚度<=b.最小厚度 then 1 else 0 end
    when '='  then case when a.厚度= b.最小厚度 then 1 else 0 end
    when '>'  then case when a.厚度> b.最小厚度 then 1 else 0 end
    when '>=' then case when a.厚度>=b.最小厚度 then 1 else 0 end
    end=1
    and
    case b.比較符2
    when '<'  then case when a.厚度< b.最大厚度 then 1 else 0 end
    when '<=' then case when a.厚度<=b.最大厚度 then 1 else 0 end
    when '='  then case when a.厚度= b.最大厚度 then 1 else 0 end
    when '>'  then case when a.厚度> b.最大厚度 then 1 else 0 end
    when '>=' then case when a.厚度>=b.最大厚度 then 1 else 0 end
    end=1
    go--删除测试
    drop table A表,B表/*--测试结果類型         厚度      實際類型       
    ---------- ------- ---------- 
    4H         1.1     4H1
    4G         1.5     4G2(所影响的行数为 2 行)
    --*/