三层结构的搭建及 casewhen.docx

上传人:b****7 文档编号:23532351 上传时间:2023-05-18 格式:DOCX 页数:11 大小:165.96KB
下载 相关 举报
三层结构的搭建及 casewhen.docx_第1页
第1页 / 共11页
三层结构的搭建及 casewhen.docx_第2页
第2页 / 共11页
三层结构的搭建及 casewhen.docx_第3页
第3页 / 共11页
三层结构的搭建及 casewhen.docx_第4页
第4页 / 共11页
三层结构的搭建及 casewhen.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

三层结构的搭建及 casewhen.docx

《三层结构的搭建及 casewhen.docx》由会员分享,可在线阅读,更多相关《三层结构的搭建及 casewhen.docx(11页珍藏版)》请在冰豆网上搜索。

三层结构的搭建及 casewhen.docx

三层结构的搭建及casewhen

 

下面我们建立一个名为ShopStore的项目,采用三层构架:

1.新建立一个空白解决方案文件,如下图:

2.此时解决方案中没有任何项目.

3.右键选择解决方案--选择添加新项目--选择类库(新建DataAccess项目)

4.重复以上步骤,依次建立三个类库项目,分别是:

DataAccess数据访问层,Bussiness业务逻辑层,Common公共层(一些公共类、方法)5.新建项目(网站),即表示层

6.到此项目建立完成,解决方案如下图:

在windows资源管理器中如下图:

51aspx最后编辑于2008-05-1213:

09:

53

本主题由董事长51aspx于2008-5-1213:

10:

55执行设置精华/取消操作

 

SQL利用Case When Then多条件判断

(2010-05-2614:

47:

30)

标签:

杂谈

分类:

SQLServer

CASE

   WHEN条件1THEN结果1

   WHEN条件2THEN结果2

   WHEN条件3THEN结果3

   WHEN条件4THEN结果4

.........

   WHEN条件NTHEN结果N

   ELSE结果X

END

Case具有两种格式。

简单Case函数和Case搜索函数。

--简单Case函数

CASEsex

        WHEN'1'THEN'男'

        WHEN'2'THEN'女'

ELSE'其他'END

--Case搜索函数

CASEWHENsex='1'THEN'男'

        WHENsex='2'THEN'女'

ELSE'其他'END

例如:

SELECT    id,name,cj,(CASEWHENcj<60THEN'不及格'WHENcjBETWEEN60AND90THEN'良好'WHENcj>90THEN'优秀'END)AS状态

FROM  stud

 

这两种方式,可以实现相同的功能。

简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。

还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

--比如说,下面这段SQL,你永远无法得到“第二类”这个结果

CASEWHENcol_1IN('a','b')THEN'第一类'

        WHENcol_1IN('a')      THEN'第二类'

ELSE'其他'END

下面我们来看一下,使用Case函数都能做些什么事情。

一,已知数据按照另外一种方式进行分组,分析。

有如下数据:

(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为PrimaryKey)

国家(country)人口(population)

中国600

美国100

加拿大100

英国200

法国300

日本250

德国200

墨西哥50

印度250

根据这个国家人口数据,统计亚洲和北美洲的人口数量。

应该得到下面这个结果。

洲人口

亚洲1100

北美洲250

其他700

想要解决这个问题,你会怎么做?

生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。

如果使用Case函数,SQL代码如下:

SELECT  SUM(population),

        CASEcountry

                WHEN'中国'    THEN'亚洲'

                WHEN'印度'    THEN'亚洲'

                WHEN'日本'    THEN'亚洲'

                WHEN'美国'    THEN'北美洲'

                WHEN'加拿大'  THEN'北美洲'

                WHEN'墨西哥'  THEN'北美洲'

        ELSE'其他'END

FROM    Table_A

GROUPBYCASEcountry

                WHEN'中国'    THEN'亚洲'

                WHEN'印度'    THEN'亚洲'

                WHEN'日本'    THEN'亚洲'

                WHEN'美国'    THEN'北美洲'

                WHEN'加拿大'  THEN'北美洲'

                WHEN'墨西哥'  THEN'北美洲'

        ELSE'其他'END;

同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。

SQL代码如下;

SELECT

        CASEWHENsalary<=500THEN'1'

            WHENsalary>500ANDsalary<=600  THEN'2'

            WHENsalary>600ANDsalary<=800  THEN'3'

            WHENsalary>800ANDsalary<=1000THEN'4'

        ELSENULLENDsalary_class,

        COUNT(*)

FROM    Table_A

GROUPBY

        CASEWHENsalary<=500THEN'1'

            WHENsalary>500ANDsalary<=600  THEN'2'

            WHENsalary>600ANDsalary<=800  THEN'3'

            WHENsalary>800ANDsalary<=1000THEN'4'

        ELSENULLEND;

二,用一个SQL语句完成不同条件的分组。

有如下数据

国家(country)性别(sex)人口(population)

中国1340

中国2260

美国145

美国255

加拿大151

加拿大249

英国140

英国260

按照国家和性别进行分组,得出结果如下

国家男女

中国340260

美国4555

加拿大5149

英国4060

普通情况下,用UNION也可以实现用一条语句进行查询。

但是那样增加消耗(两个Select部分),而且SQL语句会比较长。

下面是一个是用Case函数来完成这个功能的例子

SELECTcountry,

      SUM(CASEWHENsex='1'THEN

                      populationELSE0END),  --男性人口

      SUM(CASEWHENsex='2'THEN

                      populationELSE0END)  --女性人口

FROM  Table_A

GROUPBYcountry;

这样我们使用Select,完成对二维表的输出形式,充分显示了Case函数的强大。

三,在Check中使用Case函数。

在Check中使用Case函数在很多情况下都是非常不错的解决方法。

可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。

下面我们来举个例子

公司A,这个公司有个规定,女职员的工资必须高于1000块。

如果用Check和Case来表现的话,如下所示

CONSTRAINTcheck_salaryCHECK

          (CASEWHENsex='2'

                  THENCASEWHENsalary>1000

                        THEN1ELSE0END

                  ELSE1END=1)

如果单纯使用Check,如下所示

CONSTRAINTcheck_salaryCHECK

          (sex='2'ANDsalary>1000)

女职员的条件倒是符合了,男职员就无法输入了。

 

Select top 100 State,JoinState, 

(case when State=1 and Joinstate=0 then 2 when State=1 and JoinState=1 then 1 else 0 end) as usestate from UserInfo

(2)

select     ID,Username,namer=(casewhen(score<='50')   then'实习'

                                   when(score>'50' and score<='500')  then'赤脚医生'    

                                   when(score>'500' andscore<='1000')  then'村卫生员' 

                                   when(score>'1000' andscore<='1500')  then'乡卫生员' 

                                   when(score>'1500' andscore<='2000')  then'镇卫生员'

                                   when(score>'2000' andscore<='3000')  then'医师'

                                   when(score>'3000' andscore<='5000')  then'主治医师'

                                   when(score>'5000' andscore<='10000')  then'副主任医师'

                                   when(score>'10000' andscore<='20000')  then'主任医师'

                                   when(score>'20000' andscore<='50000')  then'健康大使'

                                   else  '健康大使' end),(SELECTcount(id)

        FROM jk01_YiWen_Question 

        WHERE UserID= dbo.jk01_Member.ID) as questionnum 

  from jk01_Member

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1