怎么在select语句中加判断条件

cobra_chen 2011-12-28 02:53:56
现在有一个表

table
age_level child_num child_pay child_time adult_num adult_pay adult_time older_num older_pay older_time
1 ....

根据age_level来抓取要的 num pay time三个值

当age_level = 1 的时候返回 child_num child_pay child_time 的值作为 num pay time
当age_level = 2 的时候返回 adult_num adult_pay adult_time 的值作为 num pay time
当age_level = 3 的时候返回 older_num older_pay older_time 的值作为 num pay time

这样的sql语句怎么写?
...全文
3215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpingping 2011-12-28
  • 打赏
  • 举报
回复
额……这是sqlserver,不是oracle,抱歉
xpingping 2011-12-28
  • 打赏
  • 举报
回复
decode(age_level,1,child_num ,2,adult_num, older_num)num ,
decode(age_level,1,child_pay ,2,adult_pay, older_pay)pay ,
decode(age_level,1,child_time,2,adult_time, older_time)time,

勿勿 2011-12-28
  • 打赏
  • 举报
回复
你有三个字段 就需要返回三个值来的
[Quote=引用 4 楼 cobra_chen 的回复:]
1楼里面有3个case when then end
可以用一个解决么?

或者可以用if 语句来做么?


引用 3 楼 qianjin036a 的回复:

引用 2 楼 cobra_chen 的回复:

有没有一种办法?
就比如。
有三个变量num ,pay ,time.

如果level等于1
那么
num = child_num
pay = child_pa……
[/Quote]
cobra_chen 2011-12-28
  • 打赏
  • 举报
回复
1楼里面有3个case when then end
可以用一个解决么?

或者可以用if 语句来做么?

[Quote=引用 3 楼 qianjin036a 的回复:]

引用 2 楼 cobra_chen 的回复:

有没有一种办法?
就比如。
有三个变量num ,pay ,time.

如果level等于1
那么
num = child_num
pay = child_pay
time = child_time

如果level等于2
那么
num = adult_num
pay = adult_pay
time = adult……
[/Quote]
-晴天 2011-12-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cobra_chen 的回复:]

有没有一种办法?
就比如。
有三个变量num ,pay ,time.

如果level等于1
那么
num = child_num
pay = child_pay
time = child_time

如果level等于2
那么
num = adult_num
pay = adult_pay
time = adult_time

如果level等于3
那……
[/Quote]

1 楼,不正是你要的办法么?
cobra_chen 2011-12-28
  • 打赏
  • 举报
回复
有没有一种办法?
就比如。
有三个变量num ,pay ,time.

如果level等于1
那么
num = child_num
pay = child_pay
time = child_time

如果level等于2
那么
num = adult_num
pay = adult_pay
time = adult_time

如果level等于3
那么
num = older_num
pay = older_pay
time = older_time


[Quote=引用 1 楼 qianjin036a 的回复:]

SQL code
select age_level,
(case when age_level = 1 then Chile_num when age_level=2 then adult_num when age_level=3 then older_num end)as num,
(case when age_level = 1 then Chile_pay when age_level=……
[/Quote]
-晴天 2011-12-28
  • 打赏
  • 举报
回复
select age_level,
(case when age_level = 1 then Chile_num when age_level=2 then adult_num when age_level=3 then older_num end)as num,
(case when age_level = 1 then Chile_pay when age_level=2 then adult_pay when age_level=3 then older_pay end)as pay,
(case when age_level = 1 then Chile_time when age_level=2 then adult_time when age_level=3 then older_time end)as time
from table

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧