zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    代理 XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 来启用“代理 XP”。
    sql 操作常用操作语句 新增、修改字段等
    easyui 日期控件清空值
    jQuery文件上传插件jQuery Upload File 有上传进度条
    js中文乱码怎么解决【转】
    [转]SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定
    SqlBulkCopy批量添加数据
    常用正则表达式
    查询每张表的大小
    Jquery里的特定小技巧
  • 原文地址:https://www.cnblogs.com/daban/p/2643779.html
Copyright © 2011-2022 走看看