两张表,
ECN表里面有ID,日期,ECNNum,文号,机种...等字段,(ECNNum长度12位)
Rules表里面有ECNnum_Rules,Class_Rules,Fclass_Rules字段,(ECNnum_Rules长度为2位) 请问如何:将表Rules里面ECNnum_Rules做为条件,判断ECN表里ECNNum前2位等于ECNnum_Rules的数据
AND
 如果等于的话,就把数据要出来
 然后在在这些数据里面判断ECN表中的文号是否等于Rules表中的ECNnum_Class字段
OR
 或者ECN表中的机种名是否包含Rules表中的ECNnum_Fclass字段,
 是的话,则在将这些数据抓取出来。谢谢。

解决方案 »

  1.   

    select *from (select * from Rules where ECN.文号=ECNnum_CLass or CHARINDEX(ECNnum_FcLass ,ECN.机种名)>0) a  join ECN on  a.ECNnum_rules=LEFT(ECN.ECNNum,2)
      

  2.   


    SELECT A.* 
    FROM ECN A JOIN RULES B ON LEFT(A.ECNNUM,2)=B.ECNNUM_RULES AND A.文号=B.ECNnum_Class
    UNION 
    SELECT A.*
    FROM ECN A JOIN RULES B ON A.机种名 LIKE '%'+B.ECNnum_Fclass+'%'
      

  3.   

    select * from ECN where exists ( select * from Rules where ECNnum_Rules = left( ECNNum, 2 ));
      

  4.   

    select *from (select * from Rules where ECN.文号=ECNnum_CLass or CHARINDEX(ECNnum_FcLass ,ECN.机种名)>0) a  join ECN on  a.ECNnum_rules=LEFT(ECN.ECNNum,2)
      

  5.   


    跑出来的结果有一个问题就是ECNNUM不等于ecnnum_rules的数据也会跑出来 。
      

  6.   

    CREATE TABLE #ECN
    (PID VARCHAR(10),
     DEPT_P VARCHAR(10),
     ID VARCHAR(10))INSERT INTO #ECN
    SELECT 'EC123','A1','AA1' UNION ALL
    SELECT 'EC124','B2','AA2' UNION ALL
    SELECT 'ED125','A3','AA3' UNION ALL
    SELECT 'EC126','A4','AA4'UNION ALL
    SELECT 'EC127','B4','AA5'UNION ALL
    SELECT 'EC128','A6','AA6'CREATE TABLE #RULES
    (PID VARCHAR(10),
     DEPT_P VARCHAR(10),
     ID VARCHAR(10))INSERT INTO #RULES
    SELECT 'EC','A1','AA2' UNION ALL
    SELECT 'MP','A2','AA1' UNION ALL
    SELECT '','A3','' UNION ALL
    SELECT '','A4',''UNION ALL
    SELECT '','A6',''
    SELECT A.* 
    FROM #ECN A JOIN #RULES B ON LEFT(A.PID,2)=B.PID AND A.DEPT_P=B.DEPT_P
    UNION 
    SELECT A.*
    FROM #ECN A JOIN #RULES B ON A.ID LIKE '%'+B.ID+'%'