select b. 派出所,a.身份证号码, substring(a.身份证号码,15,3)as 编号
from 表1 a,表2 b 
where substring(a.身份证号码,1,6)=b.地区代码 and substring(a.身份证号码,15,3)>=b.最小范围 and 
substring(a.身份证号码,15,3)>=b.最大范围

解决方案 »

  1.   

    select b. 派出所,a.身份证号码, substring(a.身份证号码,15,3)as 编号
    from 表1 a,表2 b 
    where substring(a.身份证号码,1,6)=b.地区代码 and substring(a.身份证号码,15,3)>=b.最小范围 and 
    substring(a.身份证号码,15,3)<=b.最大范围
      

  2.   

    SELECT B. 派出所,A.身份证号码, SUBSTRING(A.身份证号码,15,3)AS 编号
    FROM 表1 A,表2 B 
    WHERE SUBSTRING(A.身份证号码,1,6)=B.地区代码 AND SUBSTRING(A.身份证号码,15,3)>=B.最小范围 
    AND SUBSTRING(A.身份证号码,15,3)<=B.最大范围
    AND (BB.最小范围=表2中某一条数据的最小范围  AND B.最大范围=表2中某一条数据的最大范围)
      

  3.   

    对了用游标吧:DECLARE CUR1 SCROLL CURSOR FOR
    SELECT 地区代码 FROM 表2 ORDER BY 地区代码,派出所, 最小范围,最大范围DECLARE @DX VARCHAR(20)OPEN CUR1FETCH NEXT FROM CUR_PY INTO @DX
     
    WHILE @@FETCH_STATUS=0
    BEGIN    INSERT INTO 表3
        SELECT B. 派出所,A.身份证号码, SUBSTRING(A.身份证号码,15,3)AS 编号
    FROM 表1 A,表2 B 
    WHERE SUBSTRING(A.身份证号码,1,6)=B.地区代码 AND SUBSTRING(A.身份证号码,15,3)>=B.最小范围 
    AND SUBSTRING(A.身份证号码,15,3)<=B.最大范围

    FETCH NEXT FROM CUR_PY INTO @PY
    ENDSELECT * FROM 表3CLOSE CUR_PY
    DEALLOCATE CUR_PY
      

  4.   

    SORRY:DECLARE CUR1 SCROLL CURSOR FOR
    SELECT 地区代码 FROM 表2 ORDER BY 地区代码,派出所, 最小范围,最大范围DECLARE @DX VARCHAR(20)OPEN CUR1FETCH NEXT FROM CUR1 INTO @DX
     
    WHILE @@FETCH_STATUS=0
    BEGIN    INSERT INTO 表3
        SELECT B. 派出所,A.身份证号码, SUBSTRING(A.身份证号码,15,3)AS 编号
    FROM 表1 A,表2 B 
    WHERE SUBSTRING(A.身份证号码,1,6)=B.地区代码 AND SUBSTRING(A.身份证号码,15,3)>=B.最小范围 
    AND SUBSTRING(A.身份证号码,15,3)<=B.最大范围

    FETCH NEXT FROM CUR1 INTO @PY
    ENDSELECT * FROM 表3CLOSE CUR1
    DEALLOCATE CUR1