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

运行结果如下:

时间: 2024-10-09 20:50:09

sql service (case when then else end ..... group by)的相关文章

Sql Service笔记

笔记是在听郝斌老师的Sql Service教程所做 概念 Sql Service中单引号' '表示字符串,双引号" "表示名称(字段的别名) 约束 外键约束:通过外键约束从语法上保证了本事物所关联的其他事物是一定存在的,事物和事物之间的关系是通过外键来体现的 check约束:保证食物属性的取值是在合法的范围之间的 default约束:保证事物的属性值一定会有一个默认值 保证事物属性的取值不允许重复,但允许其中有一列且有且仅有一列为空 unique键是否允许多列为空? 答案:SqlSer

SQL Fundamentals SQL列字段的处理 SQL(case、decode、行转列)

列字段的处理 SQL Case 对列做处理 SQL> select deptno,sum(sal) from emp group by deptno; Select case when deptno=10 then 'ACCOUNTING' when deptno=20 then 'RESERCH' when deptno=30 then 'SALES' end, sum(sal) from emp group by deptno 列字段的处理 SQL Decode 还有一种情况是当什么都不是的

数据库SQL Service 2014中文版的安装和配置教程

一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http://pan.baidu.com/s/1pL5sSOV 2.下载一个“Microsoft.NET Framework 3.5 Service Pack 1_W8.1_x64”(可以自己取官方网站下载,我这个也是自己下载的,你也可以下载我百度云的) http://pan.baidu.com/s/1o8

在Oracle/SQL Service中通过Function返回Table

本函数用途:返回一个Table 在Oracle中实现,范例: 1 --在Types中: 2 create or replace type objTable as object 3 ( 4 s_usercode varchar2(32767), 5 s_username varchar2(32767) 6 ); 7 8 CREATE OR REPLACE TYPE tabTemp AS TABLE OF objtable; 9 10 11 --在Function中: 12 --使用Pipeline

Sql Service 的job作业新建过程

第一步:打开sql service 找到 SQL SERVER Agent 下的 jobs 如图: 注:如果没有找到,请查看你安装sql service 的版本   通过 select @@VERSION查看 本人安装版本为:Microsoft SQL Server 2014 - 12.0.4100.1 (X64)     Apr 20 2015 17:29:27     Copyright (c) Microsoft Corporation    Enterprise Edition (64-

Tuning SQL via case when statement

原SQL如下:SQL的主要问题是红色部分居然通过标量查询,反复的查找与SQL相同的基表,很显然这个可以用case when来简化. select a.TRAN_ID,a.AMOUNT,a.BALANCE,a.INVAMT,a.PROMISED,a.INVNO,a.RCLNUM,b.PROBLEM_ID, a.TRANTYPE,a.TYPE,a.DUEDATE,a.INVDATE,a.RCLDATE,a.LASTTYPE,a.LOCBAL,a.CUSTNO,b.STATUS,a.PAYMENTS_

BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息

SQL Service Broker 是在SQL Server 2005中新增的功能.Service Broker 为 SQL Server 提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的应用.当然从题目大家可能也看出来了.我们本文主要不是为了讲SQL Service Broker(SSB),而是讲一下如何使用BizTalk WCF-SQL Adapter来访问SSB的数据. SQL Service Broker(SSB) 为要便于大家更好的接下来的示例,我们还是概况的讲一下SSB的

Sql Service的艺术(三) SQL聚合函数的应用

SQL提供的聚合函数有求和,最大值,最小值,平均值,计数函数等. 聚合函数及其功能: 函数名称 函数功能 SUM() 返回选取结果集中所有值的总和 MAX() 返回选取结果集中所有值的最大值 MIN() 返回选取结果集中所有值的最小值 AVG() 返回选取结果集中所有值的平均值 COUNT() 返回选取结果集中行的数目 学习本节所需要的两张表: CREATE TABLE TEACHER ( ID INT IDENTITY (1,1) PRIMARY KEY , --主键,自增长 TNO INT

轻量ORM-SqlRepoEx (八)MySQL、Sql Service 迁移

数据库变更在编程应用中是常的,MySQL.Sql Service之间的数据迁移更为常见,在 SqlRepoEx2.0DemoForAspCore中演示了,这种数据库之间切换时SqlRepoEx是如何的简单.中演示了,这种数据库之间切换时SqlRepoEx是如何的简单. 第一步.增加SqlRepoEx.MySql.ServiceCollection的Nuget引用: 第二步.更改Startup.cs文件中 using SqlRepoEx.MsSql.ServiceCollection; 为usin