交叉表,递归与分布式查询交叉表递归与分布式查询
1.case语句的用法
说明:利用case语句可以返回多个可能结果的表达式,case语句分为两种模式,简单模式和搜索模式。
A.简单模式.
说明:简单模式是把一个表达式与一组简单表达式进行对比以确定结果语法:caseinput_expressionWhenwhen_expressionthenresult_expression[…n]Elseelse_result_expressionend
参数说明:参数说明
input_expression:需要进行判断的表达式when_expression:是将要和input_expression进行对比的简单表达式,可以是任何sql有效地表达式,when_expression和input_expression的类型必须相同或者是隐式转换result_expression:是当input_expression和when_expression比较的结果为true是返回的表达式n:占位符,表示有多个when_expression和then_expressionelse_result_expression:比较运算结果都不为true时返回的表达式,如果省略此参数,返回结果为null。Else_result_expression表达式的类型必须和result_expression的类型是相同的,或者是隐式转换的!
B.搜索模式.
说明:所有模式是计算一组布尔表达式以确定结果语法:casewhenBoolean_expressionthenresult_expression[…n]Elseelse_result_expressionEnd
参数说明:参数说明:
Boolean_expression:使用case搜索模式时所计算的表达式,Boolean_expression可以是任何的布尔表达式.Result_expression:当Boolean_expression表达式为true时返回的表达式,result_expression为任意有效地表达式。Else_result_expression:Boolean_expression这个布尔值都不为true时返回的表达式.如果没当有指定此参数将返回null。Else_result_expression表达式的类型和resulet_expression类型必须是相同的,或者是隐式转换。
例题:例题:
(1)定义一个变量并赋值,利用简单case判断并输出结果Declear@numberchar(5)Set@number=‘1’SelectCase@numberWhen‘1’then‘男’When‘2’then‘女’Else‘3’End
(2)定义一个变量并赋值,利用搜索case判断并输出结果Declare@numberintSet@number=85SelectCaseWhen@number<60then‘不及格’When@numberbetween60and80then‘良好‘When@numberbetween81and100then‘优秀’Else‘不可能‘End(3)更新联系方式表中的年龄,为郭盼年龄减1,为杨慧的减2Updatecontactsetages=CaseagesWhen(selectagesfromcontactwherenames=’郭盼’and性别=’女’)thenages-2When(selectagesfromcontactwherenamese=’杨慧’and性别=’女’)thenages-1ElseAgesend注意:如果这儿两人的年龄相同的话则只执行第一个when,也就是年龄都想减2,下条when则不会被执行!(4)更新联系方式表中的年龄,是郭盼的为20,为杨慧的为19,以雷字开头的为21Updatecontactsetages=CaseWhennames=’郭盼’then20Whennames=’杨慧’then19Whennameslike‘雷%’then21ElseAgesEnd