最近刚学SQL 老师出了一条题目作业:显示学生的姓名,年龄信息,年龄信息不显示具体的数字,而显示这一的信息:如果小于20岁,则显示年轻;如果20-50岁,则显示中年;如果大于50岁,显示老年我按照书本上的语句自己凑了出来select sname AS 姓名,年龄段=CASE
when datediff(year,birthday,getdate())<'20' then '青年'
when datediff(year,birthday,getdate())>='20' and datediff(year,birthday,getdate())<='50' then '中年'
else '老年'
end
from s但是datediff(year,birthday,getdate())这个重复了N次
我就有个疑问了,难道函数不能赋值到一个自定义的变量上么?请问如果这题用我说的写法 该怎么写?
when datediff(year,birthday,getdate())<'20' then '青年'
when datediff(year,birthday,getdate())>='20' and datediff(year,birthday,getdate())<='50' then '中年'
else '老年'
end
from s但是datediff(year,birthday,getdate())这个重复了N次
我就有个疑问了,难道函数不能赋值到一个自定义的变量上么?请问如果这题用我说的写法 该怎么写?
解决方案 »
- 请大家举一下sql使用事务的例子???谢谢!可以多给点分。。。。。
- 急!如何在企业管理器中,将表结构和表中的数据导成SQL脚本请高手指点
- 如何修复通过局域网删除的MSSQLServer数据库文件(特急,请高手帮忙)
- 问一条sql语句:A,B,C三张表,如果表A的当前记录满足一个条件的话就和B作连接,如果不满足就和C作连接。怎么写?
- 存储过程不能返回值,帮忙看一下,谢谢
- 请SQL高手帮忙:如何从一个表中复制列名和数据,到另一个表创建该列名并复制数据?
- 求SQL中开平方的函数
- 开帖, zjcxc(邹建) 接分,
- 在存储过程中,如何把select得到的一个值赋给一个变量?
- 为什么sum()取得的值为null?
- 电机控制仿真
- sql错误提示
select sname AS 姓名,年龄段=CASE
when datediff(year,birthday,getdate())<'20' then '青年'
when datediff(year,birthday,getdate())<='50' then '中年'
else '老年'
end
from s不过你的条件可以简略一下
datediff(year,birthday,getdate())>='20'
这句没什么用
如果这样写的话第二个when的意思不就是小于50的都是中年? 还是说 when是执行完第一个条件如果不符合再执行第二个条件?
不过可以稍微精简一下.select sname AS 姓名,年龄段=CASE
when datediff(year,birthday,getdate()) < 20 then '青年'
when datediff(year,birthday,getdate()) between 20 and 50 then '中年'
else '老年'
end
from s
select sname AS 姓名,年龄段=CASE
when age <'20' then '青年'
when age <='50' then '中年'
else '老年'
end
from
(
select sname,datediff(year,birthday,getdate()) age from s
) m语法未校验。效率还没原来的高
谢谢啦!!!原来有那么多写法,效率我不计算 我刚刚才学习SQL 语法想学多点,想看看这个有多少种写法 学习学习sql的语法!!!,大家举例的都是很简单的!!
我一看就懂了 谢谢大家!!!