测试数据
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
*/
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
*/
解决方案 »
- 两个表,两个都有ID字段,两个ID字段想要都自增,但要求不出现重复,应该如何操作?
- 购物的表操作
- 帮忙写个T_SQL自定义函数
- 如何捕获删除记录出错的 返回值
- 各位大哥,请帮帮小弟,有关SQL Server 2000的安装问题
- 高分请教
- 远程登陆到ORACLE提示表不存在
- 为什么安装了SQL server2000后不能启动Enterprise Manager??? help!!!
- 我在对表作物理删除时,提示错误信息说:必须以独占方式打开表。我该怎么做?谢谢!
- 写的trigger和procedure,都会出现“输入被截为n个字符”的提示,这样的语句又没有问题,如果没有,怎样避免出现这样的信息
- 创建表时提示:指定的架构名称 "dbo" 不存在,或者您没有使用该名称的权限
- 如何在sql sever 2008中查看某列是否unique?
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 行受影响)
--其中最后个插入语句需修改,如下:
insert into #GS
values('管理费','GuanLiFei','case when DepName=''办公室'' Then 0 Else 20 END')
--如果一定要列按着你的顺序来
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 行受影响)
(
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
--测试数据
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
是的,我已经写出来了.CSDN论坛热心人就是多呀!
结贴.