--查询
declare @s varchar(8000)
set @s=''
select @s=@s+' union all select a='''+CODE_VALUE
+''',* from '+CODE_DESC
from CD_COMPANY_LINK_TYPE
set @s=substring(@s,12,8000)
exec('select COMPANY_CODE_VALUE=a.CODE_VALUE,COMPANY_CODE_NAME=a.CODE_NAME
,TYPE_CODE_VALUE=b.CODE_VALUE,TYPE_CODE_NAME=b.CODE_NAME 
from CD_COMPANY_LINK_TYPE a join('+@s+')b on a.CODE_VALUE=b.a')

解决方案 »

  1.   

    create table CD_COMPANY_LINK_TYPE(CODE_VALUE char(2),CODE_NAME varchar(10),CODE_DESC varchar(50))
    insert CD_COMPANY_LINK_TYPE
    select           '01','工程部类型','CD_PROJECT_APPEAL_TYPE'
    union all select '02','物业部类型','CD_PRODUCTMANAGER_APPEAL_TYPE'
    union all select '03','销售部类型','CD_SELL_APPEAL_TYPE'

    create table CD_PROJECT_APPEAL_TYPE(CODE_VALUE char(2),CODE_NAME varchar(10),CODE_DESC varchar(10))
    insert CD_PROJECT_APPEAL_TYPE
              select '01','土建'    ,''
    union all select '02','门窗安装',''
    union all select '03','水电管道',''
    union all select '04','小区配套',''
    union all select '05','其他'    ,''create table CD_PRODUCTMANAGER_APPEAL_TYPE(CODE_VALUE char(2),CODE_NAME varchar(10),CODE_DESC varchar(10))
    insert CD_PRODUCTMANAGER_APPEAL_TYPE
              select '01','服务',''
    union all select '02','管理',''
    union all select '03','物管',''
    union all select '04','绿化',''
    union all select '05','保洁',''
    union all select '06','其他',''create table CD_SELL_APPEAL_TYPE(CODE_VALUE char(2),CODE_NAME varchar(10),CODE_DESC varchar(10))
    insert CD_SELL_APPEAL_TYPE
              select '01','合同'     ,''
    union all select '02','服务'     ,''
    union all select '03','户型与面积',''
    union all select '04','其他'     ,''
    go--查询
    declare @s varchar(8000)
    set @s=''
    select @s=@s+' union all select a='''+CODE_VALUE
    +''',* from '+CODE_DESC
    from CD_COMPANY_LINK_TYPE
    set @s=substring(@s,12,8000)
    exec('select COMPANY_CODE_VALUE=a.CODE_VALUE,COMPANY_CODE_NAME=a.CODE_NAME
    ,TYPE_CODE_VALUE=b.CODE_VALUE,TYPE_CODE_NAME=b.CODE_NAME 
    from CD_COMPANY_LINK_TYPE a join('+@s+')b on a.CODE_VALUE=b.a')
    go--删除测试
    drop table CD_COMPANY_LINK_TYPE,CD_PROJECT_APPEAL_TYPE
    ,CD_PRODUCTMANAGER_APPEAL_TYPE,CD_SELL_APPEAL_TYPE/*--测试结果COMPANY_CODE_VALUE COMPANY_CODE_NAME TYPE_CODE_VALUE TYPE_CODE_NAME 
    ------------------ ----------------- --------------- -------------- 
    01                 工程部类型             01              土建
    01                 工程部类型             02              门窗安装
    01                 工程部类型             03              水电管道
    01                 工程部类型             04              小区配套
    01                 工程部类型             05              其他
    02                 物业部类型             01              服务
    02                 物业部类型             02              管理
    02                 物业部类型             03              物管
    02                 物业部类型             04              绿化
    02                 物业部类型             05              保洁
    02                 物业部类型             06              其他
    03                 销售部类型             01              合同
    03                 销售部类型             02              服务
    03                 销售部类型             03              户型与面积
    03                 销售部类型             04              其他
    --*/
      

  2.   

    select COMPANY_CODE_VALUE, COMPANY_CODE_NAME,TYPE_CODE_VALUE,TYPE_CODE_NAME  from CD_COMPANY_LINK_TYPE, 
    CD_PROJECT_APPEAL_TYPE where CODE_VALUE=''01''
    union all
    select COMPANY_CODE_VALUE, COMPANY_CODE_NAME,CODE_VALUE as TYPE_CODE_VALUE,CODE_NAME as TYPE_CODE_NAME  from CD_COMPANY_LINK_TYPE , 
    CD_PRODUCTMANAGER_APPEAL_TYPE  where CODE_VALUE=''02''
    union all
    select COMPANY_CODE_VALUE, COMPANY_CODE_NAME,CODE_VALUE as TYPE_CODE_VALUE,CODE_NAME as TYPE_CODE_NAME  from CD_COMPANY_LINK_TYPE, 
    CD_SELL_APPEAL_TYPE where CODE_VALUE=''03''