全部博文(158)
分类: 数据库开发技术
2012-11-20 17:11:47
一、A、B两表关联,如果要生成下列显示结果,如何写sql语句?
A表
id number_a
1 5
2 7
3 13
4 1
B表
id number_b
1 10
4 8
显示结果
id number_a number_b number_sum
1 5 10 15
2 7 0 7
3 13 0 13
4 1 8 9
ISNULL:
将被检查是否为 NULL 的表达式。check_expression 可以为任何类型。 当 check_expression 为 NULL 时要返回的表达式。replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。 返回与 check_expression 相同的类型。 如果 check_expression 不为 NULL,则返回它的值;否则,在将 replacement_value 隐式转换为 check_expression 的类型(如果这两个类型不同)后,则返回前者。
ISNULL ( check_expression , replacement_value )参数
select a.id,number_a,ISNULL(number_b,0) number_b,number_a ISNULL(number_b,0) number_sum from a left outer join b
on a.id=b.id
二、删除除了自动编号不同,其他都相同的学生冗余信息。表中有这些字段:自动编号,学号,姓名,课程编号,分数。
delete from score
where 自动编号 not in(select MIN(自动编号) from score
group by 学号,姓名,课程编号,分数)
三、从表T1中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。注:T1中有很多科目,都有1--12月份的发生额。AccID(科目代码),Occmonth(发生额月份),DebitOccur(发生额)
select distinct AccID from T1
where AccID not in
(select T1.AccID from T1,(select * from T1 where AccID='101') as db101
where T1.Occmonth=db101.Occmonth and
T1.DebitOccur<=db101.DebitOccur
)
四、表t中有ABC三列,用一条SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select (case when a>b then a else b end),
(case when b>c then b else c end)
from t