sql的判断语句如何写和三表联接

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:24:54
a表如下
class number breafastnumber yeatime
一(1)班 45 15 2008
一(2)班 50 16 2009
b表如下
class breafastnumber months yeatime
一(1)班 2 9 2008
一(2)班 3 8 2009
c表如下
class chargename(班主任姓名)yeartime
一(1)班 李明 2008
一(2)班 莫兵 2009
表含义:
a表指一个班每年度的人数和交早餐费人数。
b表指一个班每年度某个月交早餐费人数。
c表指一个班每年度的班主任姓名。
计算要求:将年度的餐费人数与某月交早费人数相加后,判断是否达到该班人数的一半,如果达到就乘以1.5,如查达不到就乘以1.2。然后三表联结,得出一个表。年度,班级,人数系数,班主任姓名
人数系数是指早餐费人数超过该班人数就乘以1.5,不超过该班人数就乘以1.2后所得的值.

试下这个

select x.class,x.yeartime,x.number,y.chargename,'人数系数'=
case
when bnum>=number/2 then breafastnumber*1.5
else breafastnumber*1.2
end
from
(select a.yeartime,a.class,a.number,a.breafastnumber,
a.breafastnumber+b.breafastnumber bnum from a,b
where a.class=b.class and a.yeartime=b.yeartime and b.months= 月份 ) x,c y

where x.class=y.class and x.yeartime=y.yeartime

把 月份 改成你 要的那个月
如果是 字符型 要加 引号
我试了可以

select x.yeartime,x.class,x.number,y.chargename
case when bnum=number/2 then breafstnumber*1.5
else breafstnumber*1.5 end '人数系数' end from

(select a.class,a.yeartime,a.number,a.breafastnumber,
a.breafastnumber+b.breafastnumber bnum from a,b
where a,class=b.class and a.yeartime=b.yeartime and b.months='某月') x,c y

where x.class=y.class and x.yeartime=y.yeartime;

select d.yeatime,d.class,c.chargename from
((select d,class,