select
人数,
收入,
支出 ,
奖励 ,
罚款 ,
应结算工资 = 收入-支出+奖励-罚款,
人均收入 = (收入-支出+奖励-罚款)/人数,
基金贷款,
基金存款 ,
工资调节税 ,
实际结算工资 = (收入-支出+奖励-罚款)-基金贷款+基金存款-工资调节税,
实际人均收入 = ((收入-支出+奖励-罚款)-基金贷款+基金存款-工资调节税)/人数
from tablename
人数,
收入,
支出 ,
奖励 ,
罚款 ,
应结算工资 = 收入-支出+奖励-罚款,
人均收入 = (收入-支出+奖励-罚款)/人数,
基金贷款,
基金存款 ,
工资调节税 ,
实际结算工资 = (收入-支出+奖励-罚款)-基金贷款+基金存款-工资调节税,
实际人均收入 = ((收入-支出+奖励-罚款)-基金贷款+基金存款-工资调节税)/人数
from tablename
Create Table 表(项目 varchar(20),金额 money)
--插入数据
insert into 表
select '人数',50 union
select '收入',10000 union
select '支出',1000 union
select '奖励',8000 union
select '罚款',200 union
select '应结算工资',null union
select '人均收入' ,null union
select '基金贷款',3000 union
select '基金存款',2000 union
select '工资调节税',1000 union
select '实际结算工资' ,null union
select '实际人均收入',null
--select * from 表
--测试语句
DECLARE @SQL VARCHAR(8000)
declare @gs1 VARCHAR(50)
declare @gs2 VARCHAR(50)
declare @gs3 VARCHAR(50)
declare @gs4 VARCHAR(50)
SET @SQL='SELECT 1[id]'
SELECT @SQL= @SQL+
',min(CASE WHEN 项目 = ''' + 项目 + ''' THEN 金额 END )[' + 项目 + ']'
FROM (SELECT DISTINCT 项目 FROM 表 where 项目 not in('应结算工资 ','人均收入','实际结算工资','实际人均收入')) A
SET @SQL=@SQL+' FROM 表'set @gs1='应结算工资 = 收入-支出+奖励-罚款,'
set @gs1='人均收入= 应结算工资/人数,'
set @gs1='实际结算工资 = 应结算工资-基金贷款+基金存款-工资调节税,'
set @gs1='实际人均收入= 实际结算工资/人数'set @sql='select * ,应结算工资 = 收入-支出+奖励-罚款,
人均收入= (收入-支出+奖励-罚款)/人数 ,
实际结算工资=收入-支出+奖励-罚款-基金贷款+基金存款-工资调节税,
实际人均收入=(收入-支出+奖励-罚款-基金贷款+基金存款-工资调节税)/人数
from ('+@sql+')a'
exec (@SQL)
--删除测试环境
Drop Table 表
'应结算工资额,人均收入,实际结算工资额,实际人均收入'各个记录,
但是当select @sPrject='应结算工资额'
时却能排除'应结算工资额'而这样写
SELECT DISTINCT 项目 FROM 表 where 项目 not in('应结算工资 ','人均收入','实际结算工资','实际人均收入')
却能排除这四个记录,
如果我想用上面变量的方式应该怎么写呢?多谢了