• caseend 和子查询


    MSSQL操作 case end 和子查询 代码如下:

      1 create database Test
      2 go
      3 use Test
      4 go
      5 create table [user]
      6 (
      7     uId int identity(1,1) primary key,
      8     name varchar(50),
      9     level int  --1骨灰 2大虾 3菜鸟
     10 )
     11 go
     12 insert into [user] (name,level) values('犀利哥',1)
     13 insert into [user] (name,level) values('小月月',2)
     14 insert into [user] (name,level) values('芙蓉姐姐',3)
     15 
     16 select * from [user]
     17 
     18 --1、case end 相当于c#中的swith
     19 select [name],
     20     case [level] 
     21         when 1 then '骨灰' 
     22         when 2 then '大虾'
     23         when 3 then '菜鸟'
     24         else '神仙'
     25     end as '等级'
     26 from [user]
     27 
     28 --2、case end 相当于c#的多重if语句
     29 --注意:case end的返回值类型要一致
     30 use MySchool
     31 
     32 select * from score
     33 
     34 select studentId,
     35     case
     36         when english >=90 and english <=100 then 'A'
     37         when english between 80 and 89 then 'B'
     38         when english between 70 and 79 then 'C'
     39         when english between 60 and 69 then 'D'
     40         else 'E'
     41     end
     42 from score
     43 
     44 --练习1
     45 select 
     46     case 
     47         when a>b then a
     48         else b
     49     end,
     50     case 
     51         when b > c then b
     52         else c
     53     end
     54 from biao
     55 
     56 
     57 select abs(-39)
     58 
     59 --练习2
     60 use Test
     61 go
     62 create table test
     63 (
     64     number varchar(10),
     65     amount int
     66 )
     67 insert into test(number,amount) values('RK1',10)
     68 insert into test(number,amount) values('RK2',20)
     69 insert into test(number,amount) values('RK3',-30)
     70 insert into test(number,amount) values('RK4',-10)
     71 go
     72 
     73 select * from test
     74 
     75 select number,
     76     case
     77         when amount > 0 then amount
     78         else 0
     79     end as 收入,
     80     case 
     81         when amount < 0 then abs(amount)
     82         else 0
     83     end as 支出
     84 from test
     85 
     86 --增加练习
     87 name sex -- 0 1 
     88 select name,
     89     case sex
     90         when 1 then ''
     91         when 0 then ''
     92     end 
     93 from student
     94 --练习3
     95 use Test
     96 go
     97 CREATE TABLE student0 (name nvarchar(10),subject nvarchar(10),result int)
     98 INSERT INTO student0 VALUES ('张三','语文',80)
     99 INSERT INTO student0 VALUES ('张三','数学',90)
    100 INSERT INTO student0 VALUES ('张三','物理',85)
    101 INSERT INTO student0 VALUES ('李四','语文',85)
    102 INSERT INTO student0 VALUES ('李四','数学',92)
    103 INSERT INTO student0 VALUES ('李四','物理',null)
    104 
    105 SELECT * FROM student0
    106 
    107 select name,
    108     sum(case subject
    109         when '语文' then result
    110     end) as '语文',
    111     sum(case subject 
    112         when '数学' then result
    113     end) as '数学',
    114     isnull(sum(case subject
    115         when '物理' then result
    116     end),0) as '物理'
    117 from student0
    118 group by name
    119 
    120 --isnull(,)
    121 
    122 
    123 
    124 use MySchool
    125 select * from student
    126 
    127 select * from [user]
    128 delete from [user] where uid in (7,8,9)
    129 insert into [user] (uUserName,uPwd,uTimes) values('123','123',0)
    130 select * from [user]
    131 
    132 
    133 
    134 --子查询
    135 select * from (select * from student where sAge<23) as t
    136 
    137 --
    138 select max(english) from score
    139 union all
    140 select min(english) from score
    141 union all
    142 select avg(english) from score
    143 
    144 select (select max(english) from score) as t,
    145 (select min(english) from score),
    146 (select avg(english) from score)
    147 
    148 --查询高二一班所有的学生
    149 select * from class
    150 select * from student
    151 
    152 --当=、!=、<、<=、>、>=号后面是子查询的时候,
    153 --子查询必须返回一列
    154 --子查询必须返回一行
    155 --错误的情况,因为子查询返回多行
    156 select * from student where sClassId=
    157 (select cId from class where cName='高二一班' or cName='高二二班')
    158 
    159 
    160 --查询所有高二的学生
    161 select * from student where sClassId in 
    162 (select cId from class where cName like '高二%')
    163 
    164 --查询刘关张 的成绩
    165 select * from score where studentId in
    166 (select sId from student where sName in ('曹操','夏侯惇','张飞'))
    167 
    168 --子查询删除数据
    169 delete from score where studentId in 
    170 (select sId from student where sName in ('曹操','夏侯惇') )
    171 
    172 select * from score
    173 
    174 --分页
    175 
    176 select top 5 * from student order by sId desc
    177 --查询最近插入的第6-10个人。除了前5个人的前5条
    178 select top 5 * from student where sId not in
    179 (select top (5*(3-1)) sId from student order by sId desc)
    180 order by sId desc
    181 
    182 --sql 2005以后生成连续的编号
    183 insert into student (sName,sSex,sAge) values('abc','',18)
    184 
    185 select row_number() over(order by sId desc),*
    186 from student
    187 
    188 select * from 
    189 (select *,row_number() over(order by sId desc) as [no] from student) as t
    190 where t.[no] between (5*(3-1))+1 and (5*3)
    191 order by sId desc
    192 
    193 
    194 select * from student
  • 相关阅读:
    oracle实验13:单行函数-数字函数
    oracle实验12:单行函数-字符函数
    oracle实验41:编写存储过程
    oracle实验40:编写函数
    oracle实验31:使用PL/SQL,书写一个最简单的块
    oracle实验9-11:使用where和order by子句
    oracle实验6-8:关于null值,列的别名,去掉重复行
    oracle实验5:查询当前用户的所有表和视图
    MD5
    时间戳 日期 转换
  • 原文地址:https://www.cnblogs.com/daban/p/2643779.html
Copyright © 2020-2023  润新知