测试数据
create table #tempTable
(
DepName nvarchar(20) not null,

)
insert into #tempTable values ('办公室')
insert into #tempTable values ('生产部')create table #GS (
   id                   int                  identity,
     ValueMember          nvarchar(50)         null,
   DisplayFormula       nvarchar(500)        null,
   ValueFormula         nvarchar(500)        null,
   constraint PK_CALCULATEDFORMULA primary key (id)
)insert into #GS
values('基本工资','BasePay','1100')insert into #GS
values('管理费','GuanLiFei','case when  DepName=办公室 Then  0 Else  20 END')  我要的结果
/*
DepName GuanLiFei BasePay
------- --------- -------
办公室   0         1100
生产部   20        1100
*/ 

解决方案 »

  1.   


    declare @sql varchar(8000)
    set @sql = 'select DepName'
    select @sql = @sql + ' , '+ValueFormula+' [' + DisplayFormula+ ']' from #gs
    set @sql = @sql + ' from #tempTable group by DepName'
    --print @sql
    exec (@sql)/*
    DepName              BasePay     GuanLiFei
    -------------------- ----------- -----------
    办公室                  1100        0
    生产部                  1100        20(2 行受影响)
      

  2.   


    --其中最后个插入语句需修改,如下:
    insert into #GS
    values('管理费','GuanLiFei','case when  DepName=''办公室'' Then 0 Else 20 END')  
      

  3.   


    --如果一定要列按着你的顺序来
    declare @sql varchar(8000)
    set @sql = 'select DepName'
    select @sql = @sql + ' , '+ValueFormula+' [' + DisplayFormula+ ']' from #gs order by ValueFormula desc
    set @sql = @sql + ' from #tempTable group by DepName'
    --print @sql
    exec (@sql)/*
    DepName              GuanLiFei   BasePay
    -------------------- ----------- -----------
    办公室                  0           1100
    生产部                  20          1100(2 行受影响)
      

  4.   

    哦?原来是个把值拿出来进行动态执行的SQL?
      

  5.   

    create table #tempTable
    (
        DepName nvarchar(20) not null,
        
    )
    insert into #tempTable values ('办公室')
    insert into #tempTable values ('生产部')create table #GS (
       id                   int                  identity,
         ValueMember          nvarchar(50)         null,
       DisplayFormula       nvarchar(500)        null,
       ValueFormula         nvarchar(500)        null,
       constraint PK_CALCULATEDFORMULA primary key (id)
    )insert into #GS
    values('基本工资','BasePay','1100')insert into #GS
    values('管理费','GuanLiFei','case when  DepName=办公室 Then  0 Else  20 END') 
    go
    select a.depname,
    cast((case when b.ValueMember='管理费' then (case when charindex(a.depname,b.ValueFormula)>0 then reverse(substring(REVERSE(b.ValueFormula),4,charindex('e',REVERSE(b.ValueFormula),5)-4)) else '0' end) else '' end)as int) GuanLiFei,
    (case when c.ValueMember='基本工资' then c.valueformula else 0 end) BaePay
    from #tempTable a ,#GS b,#GS c
    where b.ValueMember ='管理费' and c.ValueMember ='基本工资'
    /*
    depname              GuanLiFei   BaePay
    -------------------- ----------- -----------
    办公室                  20          1100
    生产部                  0           1100(2 行受影响)*/
    go
    drop table #tempTable ,#gs
      

  6.   

    晴天大大你复制下试试么
    --测试数据
    create table #tempTable
    (
    DepName nvarchar(20) not null
    )
    insert into #tempTable values ('办公室')
    insert into #tempTable values ('生产部')create table #GS (
       id                   int                  identity,
         ValueMember          nvarchar(50)         null,
       DisplayFormula       nvarchar(500)        null,
       ValueFormula         nvarchar(500)        null,
       constraint PK_CALCULATEDFORMULA primary key (id)
    )insert into #GS
    values('基本工资','BasePay','1100')insert into #GS
    values('管理费','GuanLiFei','case when  DepName=''办公室'' Then 0 Else 20 END')    --select * from #tempTable
    --select * from #GS--开始查询
    declare @sql varchar(8000)
    set @sql = 'select DepName'
    select @sql = @sql + ' , '+ValueFormula+' [' + DisplayFormula+ ']' from #gs order by ValueFormula desc
    set @sql = @sql + ' from #tempTable group by DepName'
    --print @sql
    exec (@sql)--结束查询
    drop table #GS,#tempTable
      

  7.   


    是的,我已经写出来了.CSDN论坛热心人就是多呀!
    结贴.