• sql service (case when then else end ..... group by)


    1.

    原表
    courseid coursename score 
    ------------------------------------- 
    1 java 70 
    2 oracle 90 
    3 xml 40 
    4 jsp 30 
    5 servlet 80 
    ------------------------------------- 
    为了便于阅读, 查询此表后的结果显式如下( 及格分数为60): 
    courseid coursename score mark 
    --------------------------------------------------- 
    1 java 70 pass 
    2 oracle 90 pass 
    3 xml 40 fail 
    4 jsp 30 fail 
    5 servlet 80 pass 
    --------------------------------------------------- 
    写出此查询语句

     1 USE T4st
     2 
     3 GO
     4 IF(EXISTS(SELECT * FROM sysobjects WHERE name ='courseTes'))
     5 DROP TABLE courseTes
     6 GO
     7 
     8 CREATE TABLE courseTes
     9 (
    10    courseid INT NOT NULL PRIMARY KEY IDENTITY,
    11    coursename NVARCHAR(50) NOT NULL,
    12    score INT NOT NULL
    13 )
    14 
    15 INSERT dbo.courseTes
    16         ( coursename, score )
    17 VALUES  ( N'java', -- coursename - nvarchar(50)
    18           N'70'  -- score - int
    19           )
    20 INSERT dbo.courseTes
    21         ( coursename, score )
    22 VALUES  ( N'oracle', -- coursename - nvarchar(50)
    23           N'90'  -- score - int
    24           )
    25 INSERT dbo.courseTes
    26         ( coursename, score )
    27 VALUES  ( N'xml', -- coursename - nvarchar(50)
    28           N'40'  -- score - int
    29           )
    30 INSERT dbo.courseTes
    31         ( coursename, score )
    32 VALUES  ( N'jsp', -- coursename - nvarchar(50)
    33           N'30'  -- score - int
    34           )
    35 INSERT dbo.courseTes
    36         ( coursename, score )
    37 VALUES  ( N'servlet', -- coursename - nvarchar(50)
    38           N'80'  -- score - int
    39           )
    40 SELECT * FROM courseTes
    41 
    42 SELECT t.courseid,t.coursename,t.score,
    43 (
    44    CASE
    45    WHEN t.score > 60 THEN 'pass'
    46    ELSE 'fail'
    47    END  
    48 ) 
    49 AS mark
    50 FROM courseTes AS t

    运行结果如下:

    2.

    表内容:
    2005-05-09 胜
    2005-05-09 胜
    2005-05-09 负
    2005-05-09 负
    2005-05-10 胜
    2005-05-10 负
    2005-05-10 负

    如果要生成下列结果, 该如何写sql语句?

       时间          胜    负
    2005-05-09  2     2
    2005-05-10  1     2

    SQL语句

     1 USE T4st
     2 
     3 GO
     4 IF(EXISTS(SELECT * FROM sysobjects WHERE name ='Score'))
     5 DROP TABLE Score
     6 GO
     7 
     8 CREATE TABLE Score
     9 (
    10    TimeId NVARCHAR(50) NOT NULL,
    11    SuccessOrFail NVARCHAR(50) NOT NULL,
    12 )
    13 
    14 INSERT Score
    15        (TimeId,SuccessOrFail)
    16 VALUES (
    17         N'2005-05-09',
    18         N''
    19         )
    20 INSERT Score
    21        (TimeId,SuccessOrFail)
    22 VALUES (
    23         N'2005-05-09',
    24         N''
    25         )
    26 INSERT Score
    27        (TimeId,SuccessOrFail)
    28 VALUES (
    29         N'2005-05-09',
    30         N''
    31         )
    32 INSERT Score
    33        (TimeId,SuccessOrFail)
    34 VALUES (
    35         N'2005-05-09',
    36         N''
    37         )
    38 INSERT Score
    39        (TimeId,SuccessOrFail)
    40 VALUES (
    41         N'2005-05-10',
    42         N''
    43         )
    44 INSERT Score
    45        (TimeId,SuccessOrFail)
    46 VALUES (
    47         N'2005-05-10',
    48         N''
    49         )
    50 INSERT Score
    51        (TimeId,SuccessOrFail)
    52 VALUES (
    53         N'2005-05-10',
    54         N''
    55         )
    56 
    57 SELECT * FROM Score
    58 
    59 SELECT s.TimeId AS '时间',
    60 SUM(
    61   CASE
    62   WHEN s.SuccessOrFail ='' THEN 1
    63   ELSE 0
    64   END
    65 ) AS '',
    66 SUM(
    67   CASE
    68   WHEN s.SuccessOrFail ='' THEN 1
    69   ELSE 0
    70   END
    71 ) AS ''
    72 FROM Score AS s GROUP BY s.TimeId

    运行结果如下:

  • 相关阅读:
    小笔记系列——Excel中获取当前日期
    Git 错误:OpenSSL SSL_read: Connection was reset, errno 10054
    cmd_切换文件目录的几种方法
    Jupyter Notebook 常用操作(持续更新中……)
    chrome 浏览器书签保存
    各种开发工具注释的快捷键(持续更新中…)
    Spyder 快捷键(注释、跳转、缩进)
    ISlide插件安装后,PPT无法正常关闭
    [TimLinux] 操作系统实战45讲
    [TimLinux] vnc and go bashrc
  • 原文地址:https://www.cnblogs.com/zk-zhou/p/6651482.html
Copyright © 2020-2023  润新知