sql select case when 语句

有道笔试题:

服务器监控表server_status中,当服务器状态发生server_status变化时数据表中将被插入一条记录,状态0表示停机  1表示正常,用SQL查询Server A 的停机开始时间和结束时间,表中存在多台Server的状态记录.

SVR_ID  SVR_NAME STATUS_TIME STATUS
1 A 2013-10-31 00:00:00 1
2 B 2013-10-31 00:00:00 1
1 A 2014-11-31 00:00:00 0
2 B 2014-11-31 00:00:00 0
3 C 2014-11-31 00:00:00 0
... ... ... ...

我做的话只会

select s1.svr_name, s1.status_time start_date, s2.status_time end_date
from server_status s1, server_status s2
where s1.svr_id = s2.svr_id
and s1.status = 1
and s2.status = 0

and s1.svr_name=‘A‘

,今天看到别人用了case when语法,于是我也试着写了一下

select svr_name,
case status
when 1 then
status_time
end as start_time,
case status
when 0 then
status_time
end as end_time
from server_status
where svr_name = ‘A‘

不知道有没有更好的做法...

时间: 2024-11-01 19:55:33

sql select case when 语句的相关文章

sql中case when语句的使用

case when语句有两种格式:简单case函数和搜索case函数. --简单Case函数CASE sexWHEN '1' THEN '男'WHEN '2' THEN '女'ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '男'WHEN sex = '2' THEN '女'ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要注意

多条件情况查询,sql select case when when else

多条件情况查询 SELECT      Title,     'Price Range' =     CASE         WHEN price IS NULL THEN 'Unpriced'         WHEN price < 10 THEN 'Bargain'         WHEN price BETWEEN 10 and 20 THEN 'Average'         ELSE 'Gift to impress relatives'     END FROM titles

case when语句后的表达式

SQL中Case When语句的语法如下 Simple CASE expression: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE expression: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE

oracle菜鸟学习之 select case when的使用

[toc] oracle菜鸟学习之 select case when的使用 格式语法 case when 条件1 then action1 when 条件2 then action2 when 条件3 then action3 when 条件N then actionN else action end 例子 判断现在是几月 SQL> select case substr('20181118',5,2) 2 when '08' then '8yue' 3 when '09' then '9yue'

SQL的case when then else end语句的用法

SELECT a.managecom, a.subtype, count(*) loadsucc, sum(case when a.state in ('4', '5', '6', '7', '8', '9') then 1 else 0 end) recogsucc, sum(case when a.state in ('3', '12', '13') then 1 else 0 end) recogfail, sum(case when a.state in ('1', '2') then

SQL SELECT语句

基本SQL SELECT语句   1.       下面的语句是否可以执行成功 select ename , job , sal as salary from emp; 2.       下面的语句是否可以执行成功 select  *  from emp; 3.       找出下面语句中的错误 select empno , ename sal * 12  ANNUAL  SALARY from emp; 修改后 select empno , ename ,sal * 12  "ANNUAL  

CASE WHEN 及 SELECT CASE WHEN的用法(写了一坨烂代码发现两条sql就完成了, 哎)

转自:http://blog.sina.com.cn/s/blog_4c538f6c01012mzt.html Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END     种方式,可以实现相同的功能.

Oracle 基本SQL SELECT语句

SELECT  *  |    {   [ DISTINCT  ]    column   |    expression   [   alias   ]  ,   ...    } FROM  table; ?SELECT  标识 选择哪些列. ?FROM    标识从哪个表中选择. column后面加上空格,同时跟上别名(alias),或者 as 别名,到下一行的内容时,要用逗号隔开, 默认的别名是小写的,如果想要让它是大写的,使用 "别名" 如果别名有多个单词的时候,用双引号别名

SQL SELECT INTO 语句

SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档. SQL SELECT INTO 语法 您可以把所有的列插入新表: SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename 或者只把希望的列插入新表: SELECT colu