zoukankan      html  css  js  c++  java
  • case when

     1 --CASE 具有两种格式: 
     2 --(1)简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 
     3 --(2)CASE 搜索函数计算一组布尔表达式以确定结果。两种格式都支持可选的 ELSE 参数。 
     4 
     5 --语法
     6 --简单 CASE 函数:
     7 
     8 --CASE input_expression
     9 --    WHEN when_expression THEN result_expression
    10 --        [ ...n ]
    11 --    [ 
    12 --        ELSE else_result_expression
    13 --    END
    14 
    15 --CASE 搜索函数:
    16 
    17 SELECT CASE StatusValue
    18             WHEN '0' THEN (SELECT TOP 1 字段名 FROM work)
    19             WHEN '1' THEN (SELECT TOP 1 字段名 FROM Notice) END
    20   FROM CommonStatusDict;
    21 
    22 
    23 CREATE TABLE tb (id INT,
    24                  class VARCHAR); --class种类就只有三种,如果不固定就需要存储过程来实现
    25 INSERT tb
    26 SELECT 1,
    27        'a'
    28 UNION ALL
    29 SELECT 1,
    30        'a'
    31 UNION ALL
    32 SELECT 1,
    33        'b'
    34 UNION ALL
    35 SELECT 1,
    36        'c'
    37 UNION ALL
    38 SELECT 2,
    39        'a'
    40 UNION ALL
    41 SELECT 2,
    42        'b'
    43 UNION ALL
    44 SELECT 2,
    45        'b';
    46 SELECT *
    47   FROM tb;
    48 
    49 --想查找出按id分组得到的 a  ,b  ,c 的数量
    50 --  如下
    51 --id   a   b    c
    52 --1   2   1     1
    53 --2   1   2    0 
    54 
    55 
    56 SELECT id,
    57        a = SUM(CASE class
    58                     WHEN 'a' THEN 1
    59                     ELSE 0 END),
    60        b = SUM(CASE class
    61                     WHEN 'b' THEN 1
    62                     ELSE 0 END),
    63        c = SUM(CASE class
    64                     WHEN 'c' THEN 1
    65                     ELSE 0 END)
    66   FROM tb
    67  GROUP BY id;
    
    
  • 相关阅读:
    最小堆
    HDU1022+栈
    POJ2318+几何+判点在四边形内
    HDU1003+最大连续子序列和+起始终止位置
    HDU1174+三维点到直线距离
    HDU4517
    Two Phase Commit (2PC) [转]
    分布式系统领域经典论文翻译集 [转]银河里的星星
    每个程序员都应该知道的8个LINUX命令 [转]
    Google File System解析 [转]
  • 原文地址:https://www.cnblogs.com/Metor9527/p/10972241.html
Copyright © 2011-2022 走看看