Case ..when..End
首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下: 
 
SELECT <myColumnSpec> = 
CASE 
WHEN <A> THEN <somethingA> 
WHEN <B> THEN <somethingB> 
ELSE <somethingE> 
END  
 
在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子: 
 
USE pubs 
GO 
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 
ORDER BY price 
GO  
 
这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE: 
 
SELECT 'Number of Titles', Count(*) 
FROM titles 
GROUP BY 
    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 
GO  
 
你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示: 
 
USE pubs 
GO 
SELECT 
    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 AS Range, 
    Title 
FROM titles 
GROUP BY 
    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, 
    Title 
ORDER BY 
    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, 
    Title 
GO  
 
注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。 
把某一字段相同的数据去掉
select   id=identity(int,1,1) ,attid=cast(attachmentid as int),contentid  into   #t3   from   attachment   
  where   contentid   =   402      
   
  select   contentid,attid
  from   #t3   
  where   id   in   (select   min(id)   from   #t3   group   by   contentid) 
其中,attachmentid为自增字段,把contentid字段相同的数据,只取出一条 
写SQL字符串
通过写SQL语句来执行存储过程
declare @Sql    nvarchar(1000)
set @sql=@sql+' and C.Author like ''%'+cast(@Author as varchar)+'%'' '
set @sql=@sql+' and (datediff(s,cast('''+cast(@startTime as varchar)+''' as datetime) ,CommitDate)>0) '
exec(@sql)
like 匹配查询时,第一个%前面要加俩个'',第二个%后面要加俩个''
字符串连接时间类型时,首先把datetime类型参数转换成字符串类型,注意,也要加俩个''.

转载于:https://www.cnblogs.com/nonsuch/archive/2007/10/09/918123.html

SqlServer一些用法相关推荐

  1. Sqlserver With用法

    用法1:第一级数据统计 use Tempdbgoif not object_id(N'Tempdb..#T') is nulldrop table #TGoCreate table #T([ID] i ...

  2. SqlServer substring用法

    SUBSTRING 返回字符.binary.text 或 image 表达式的一部分.有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型. ...

  3. MySql按周,按月,按日分组统计数据

    知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case grou ...

  4. 代码规范(一)——java篇

    为什么80%的码农都做不了架构师?>>>    1. Result result=new Result(); result.setCode(201); result.setStr(r ...

  5. oracle去重离子,oracle去重

    oracle去重 create table tmp_table3 as (SELECT seqno FROM (SELECT t.seqno,ROWID, ROW_NUMBER() OVER(PART ...

  6. 删除oracle数据库的三种方法,oracle数据库的删除方法详解

    oracle数据库的删除方法详解 1.图形界面删除 练习之前记得创建快照 执行命令之前要保证数据库属于open状态 SQL> alter database open; [oracle@local ...

  7. sql语句批量修改字段

    一. 根据条件去掉指定记录的前2个字符 update 表名 set 字段名=REPLACE(字段名,字段名,SUBSTR(字段名,1,2)) where 条件: 简单例子: update test s ...

  8. 读SQL Server性能调优实战——陈畅亮、吴一晴著

    sqlserver 微软 安装 根据业务特点来考虑 1.分析产品业务数据的增长量 预估某些关键业务数据在一定时间内的增长量,预估数据在未来的增长数据, 2.了解产品业务操作类型.考虑业务是以查询为主还 ...

  9. 简单介绍SQLserver中的declare变量用法

    这篇文章主要介绍了SQLserver中的declare变量用法,sql中declare是声明的意思,就是声明变量的,这个一般是用在函数和存储过程中的.感兴趣的可以来了解一下 平时写SQL查询.存储过程 ...

最新文章

  1. 搭建Hadoop的Eclipse开发环境
  2. oracle负载均衡方案,Oracle负载均衡配置代码
  3. XML,Object,Json分析转换Xstream采用
  4. opcache php 原理_php之Opcache
  5. 前端面试问题(HTML5+Http+web)
  6. wxWidgets:wxCollapsiblePaneEvent类用法
  7. Python中的线性回归:Sklearn与Excel
  8. Linux下ps命令详解
  9. css border渐变_css边框渐变
  10. android开发 视图联动_Flutter混合APP开发
  11. 嘴上说着喜爱Java 9 ,身体却诚实地拥抱了Java 8
  12. python+request+Excel做接口自动化测试
  13. python找不到sys模块_在本地目录中找不到模块,存在于sys.path中
  14. 如何远程配置DHCP服务器
  15. wince怎么刷carplay_carplay wince安装版
  16. poe工业以太网交换机可以当普通交换机用吗,poe工业以太网交换机有哪些优势
  17. 4227. 【五校联考3day2】B (Standard IO)
  18. Android 指纹验证标准API学习
  19. 利用 eutils 实现自动下载序列文件(python实现)
  20. 用Android手机远程桌面连接登陆Windows10(用微软账号登陆),Microsoft账户登陆的计算机远程桌面连接问题

热门文章

  1. memcache的介绍与应用场景
  2. HBase应用快速学习
  3. cms系统与dreamweaver建站
  4. DevExpress右键菜单使用 zt
  5. 打开excel发送错误报告
  6. 全球IPv6网络6月6日正式启动
  7. 在线转换Postgresql 到Mysql
  8. ocp 042 第七章:管理方案对象
  9. [Github]watch和star的区别
  10. HTML5 localStorage本地存储