有一张表dj_nsrxx(登记_纳税人信息),保存纳税人信息,字段如下
nsrsbh、nsrzt_dm、zjhm
纳税人识别号、纳税人状态、证件号码
其中:纳税人识别号为企业信息的关键字
纳税人状态:一般取值“开业”、“筹建期”、“非正常”、“非正常注销”、“注销”等
证件号码:保存企业法人的证件号码现在需要找寻同一法人的企业,既有开业的又有非正常户的信息
(纳税人状态为“开业”或“筹建期”的视为“开业”;“非正常”和“非正常注销”的视为“非正常”)最后生成一张表:
纳税人识别号_开业户、纳税人状态_开业户、证件号码、纳税人识别号_非正常户、纳税人状态_非正常户举例如下
nsrsbh、nsrzt_dm、zjhm
企业A  开业       法人1
企业B  筹建期     法人1
企业C  非正常     法人1
企业D  非正常注销 法人1
企业E  注销       法人1最后生成表
企业A   开业   法人1    企业C   非正常
企业A   开业   法人1    企业D   非正常注销
企业B   筹建期 法人1    企业C   非正常
企业B   筹建期 法人1    企业D   非正常注销

解决方案 »

  1.   

    /*
    create table dj_nsrxx(nsrsbh varchar(20),nsrzt_dm varchar(20),zjhm varchar(20))
    insert into dj_nsrxx
    select  '企业A',  '开业',       '法人1'
    union all 
    select  '企业B',  '筹建期',     '法人1'
    union all 
    select  '企业C',  '非正常',     '法人1'
    union all 
    select  '企业D',  '非正常注销', '法人1'
    union all 
    select  '企业E',  '注销',       '法人1'
    */
    select * from dj_nsrxx/*
    nsrsbh  nsrzt_dm zjhm 
    ------------------------
    企业A 开业    法人1
    企业B 筹建期    法人1
    企业C 非正常    法人1
    企业D 非正常注销  法人1
    企业E 注销    法人1
    */select a.*,b.nsrsbh,b.nsrzt_dm from dj_nsrxx a
    left join dj_nsrxx b on  a.zjhm=b.zjhm  and a.nsrzt_dm  in ('开业','筹建期') and b.nsrzt_dm in ('非正常','非正常注销')
    where  a.nsrzt_dm  in ('开业','筹建期')/*
    nsrsbh  nsrzt_dm zjhm  nsrsbh   nsrzt_dm      
    ------------------------------------------- 
    企业A 开业 法人1 企业C 非正常         
    企业A 开业 法人1 企业D 非正常注销  
    企业B 筹建期 法人1 企业C 非正常          
    企业B 筹建期 法人1 企业D 非正常注销  
    */
      

  2.   

    if(object_id('dj_nsrxx')is not null)
    drop table dj_nsrxxcreate table dj_nsrxx(nsrsbh varchar(20),nsrzt_dm varchar(20),zjhm varchar(20))
    insert into dj_nsrxx
    select  '企业A',  '开业',       '法人1'
    union all 
    select  '企业B',  '筹建期',     '法人1'
    union all 
    select  '企业C',  '非正常',     '法人1'
    union all 
    select  '企业D',  '非正常注销', '法人1'
    union all 
    select  '企业E',  '注销',       '法人1'
    select a.*,b.nsrsbh,b.nsrzt_dm from dj_nsrxx a
    left join dj_nsrxx b on  a.zjhm=b.zjhm  
    and b.nsrzt_dm in ('非正常','非正常注销')
    where  a.nsrzt_dm  in ('开业','筹建期')呵呵。