日期:2014-05-16  浏览次数:20924 次

求几个不知道是简单还是复杂的SQL语句
A表
单位    人数   总工资  平均工资
技术部    30    30000
销售部    20    50000
------------------------------
我要求平均工资,其中人数有的单位可能是0,因为可能没有输入。如果人数非0,则平均工资=总工资/人数,如果人数为0,则不计算。
这个怎么写呀?

B表
单位  工资  奖金  
已经有很多条记录了。我要添加一条新记录,新记录的字段的值是B表中某些记录的相应字段的和或者差。这种SQL语句怎么写?

------解决方案--------------------

select 单位,人数,总工资,iif(isnull(人数) or 人数=0,null,总工资/人数) as 平均工资
from A
------解决方案--------------------
--如果需要更新

update A set 平均工资= iif(isnull(人数) or 人数=0,null,总工资/人数) as 平均工资

------解决方案--------------------
B表
单位  工资  奖金  
已经有很多条记录了。我要添加一条新记录,新记录的字段的值是B表中某些记录的相应字段的和或者差。这种SQL语句怎么写?

------------------------------------

用dsum()域函数,如:

insert into A(单位,总工资)
select 单位,dsum( "工资 ", "B ", "你指定的条件 ")
from B
------解决方案--------------------
update A表
set 平均工资=总工资/人数 
where 人数> 0
------解决方案--------------------
B表
单位  工资  奖金  
已经有很多条记录了。我要添加一条新记录,新记录的字段的值是B表中某些记录的相应字段的和或者差。


请举例

和比较容易,直接SUM就行了,
insert into B表
select 单位,sum(工资),sum(奖金)
from B表
group by 单位

差要看你的具体需求了。

------解决方案--------------------
select 单位,人数,总工资,iif(isnull(人数) or 人数=0,null,总工资/人数) as 平均工资
from tt
or
update tt set 平均工资= iif(isnull(人数) or 人数=0,null,总工资/人数) as 平均工资

insert into A(单位,总工资)
select 单位,dsum( "工资 ", "B ", "你指定的条件 ")
from B
or

insert into A(单位,总工资)
select 单位,dsum( "-1*工资 ", "B ", "你指定的条件 ")
from B

------解决方案--------------------
--查詢
Select
单位,
人数,
总工资,
平均工资 = IIF(人数 = 0 , 0 , 总工资 / 人数)
From
A

--更新
Update
A
Set
平均工资 = IIF(人数 = 0 , 0 , 总工资 / 人数)

------解决方案--------------------

--如果需要更新,并且在纯Access环境中,还可以使用nz()

update A set 平均工资= iif(nz(人数,0)=0,null,总工资/人数) as 平均工资



------解决方案--------------------
select 单位,人数,总工资,iif(isnull(人数) or 人数=0,0,总工资/人数) as 平均工资
from tt
or
update tt set 平均工资= iif(isnull(人数) or 人数=0,0,总工资/人数) as 平均工资

insert into A(单位,总工资)
select 单位,dsum( "工资 ", "B ", "你指定的条件 ")
from B
or

insert into A(单位,总工资)
select 单位,dsum( "-1*工资 ", "B ", "你指定的条件 ")
from B


我的异常网推荐解决方案:软件开发者薪资,http://www.aiyiweb.com/other/1391128.html