我把我的表简单的解释成这样...其实比这个咳复杂,只是来想听去一下意见。我的设计师这样的, 在表A中有三个姓名 W1,W2,W3,
有两个表,一个工资加薪表:W1 加薪两次,每次500元,W2加薪,加了500元,
另外一个表示一个 扣工资表 W1 扣了1次,为200元,W3扣了2次为共计500元,
他们的几本工资是2000元,利用select 查询2个表,列出工资总数,和加薪和扣分情况(次数)
我的原表中是这样的:select ---学分=100-SUM(考勤表.缺课记录)+3*SUM(获得表.获奖)
就是在这个意思,缺课是1分每一次,获奖时每次奖励3分,
但是,我也试了,包括奖励临时表的形式,但是只有一个学生在具有缺课记录和获奖记录的同时的时候,才会输出成绩。
但是,如果两个只有一个应用的话,那么就显示为NULL!!所以这里是不是明白啊想了1个多小时了。还是不得思路啊。。各位高人高见 啊。
有两个表,一个工资加薪表:W1 加薪两次,每次500元,W2加薪,加了500元,
另外一个表示一个 扣工资表 W1 扣了1次,为200元,W3扣了2次为共计500元,
他们的几本工资是2000元,利用select 查询2个表,列出工资总数,和加薪和扣分情况(次数)
我的原表中是这样的:select ---学分=100-SUM(考勤表.缺课记录)+3*SUM(获得表.获奖)
就是在这个意思,缺课是1分每一次,获奖时每次奖励3分,
但是,我也试了,包括奖励临时表的形式,但是只有一个学生在具有缺课记录和获奖记录的同时的时候,才会输出成绩。
但是,如果两个只有一个应用的话,那么就显示为NULL!!所以这里是不是明白啊想了1个多小时了。还是不得思路啊。。各位高人高见 啊。
参考此人提问方式。
isnull函数
加在一起可搞定
就是利用一个isnull函数,
开始为什么老是出现不了结果的额原因好像是SQL 一个数值+null 那么就是nULL?不知我说的对不????
原帖地址是:
http://topic.csdn.net/t/20060429/14/4723609.html
--> 测试数据: @表A
declare @表A table (id int,name varchar(2))
insert into @表A
select 1,'w1' union all
select 2,'w2' union all
select 3,'w3'declare @加薪表 table (jid int,userid int,num int)
insert into @加薪表
select 1,1,500 union all
select 2,1,500 union all
select 3,2,500declare @扣薪表 table (kid int,userid int,num int)
insert into @扣薪表
select 1,1,200 union all
select 2,3,200 union all
select 3,3,300declare @基本工资 int
set @基本工资=2000select a.name,
[工资总数]=@基本工资+isnull(b.加薪总金额,0)-isnull(c.扣薪总金额,0),
加薪次数=isnull(b.加薪次数,0),
扣薪次数=isnull(c.扣薪次数,0)
from @表A a
left join
(select userid,count(*) as 加薪次数,sum(num) as 加薪总金额 from @加薪表 group by userid) b on a.id=b.userid
left join
(select userid,count(*) as 扣薪次数,sum(num) as 扣薪总金额 from @扣薪表 group by userid) c on a.id=c.userid/*
name 工资总数 加薪次数 扣薪次数
---- ----------- ----------- -----------
w1 2800 2 1
w2 2500 1 0
w3 1500 0 2
*/
isnull是判断为空后可以给值的,例如我上面的isnull(col,0)