以时间为跨度统计不同的值,在该时间出现的次数。
语言如下:
select count(*),'列名' from tablename group by '列名'
select count(*),a_yqm from user group by a_yqm
举例:
这里,我要查询出1年内每个月份periods字段不同值的次数。
比如下图中可见的2015-4月,periods为2出现了3次,3出现了1次,最关键的是 periods你不知道有多少种可能的值,也许这个月有1,也许没有。
CREATE function [dbo].[GetCharIndexNum](@findstring varchar(max),@string varchar(max))
returns int
AS
BEGIN
declare @location int , --要找的字符位置
@num int --要找的字符出现的次数
set @num =0
set @location = charindex (@findstring,@string)
while @location >0 ---字符串中存在要找的字符
begin
set @num =@num +1
set @string =substring(@string,@location+1,len(@string))
set @location = charindex (@findstring,@string)
end
return @num
END
--举个例子调用这个标量值函数 select [dbo].[GetCharIndexNum]('5','abc5ab5')
返回值2,5这个字符出现了2次
本文介绍case when
case 包含两种表达格式:
第一种:简单case函数
参数:
input_expression 是使用简单 CASE 格式时所计算的表达式,是任何有效的SQL表达式。
when when_expression 使用简单 CASE 格式时 input_expression 所比较的简单表达式。when_expression 是任意有效的SQL表达式。input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。
[ ...n ]占位符 可以使用多个 when when_expression then result_expression 子句或 WHEN boolean_expression THEN result_expression 子句
then result_expression 当 input_expression = when_expression 取值为 true,或者 boolean_expression 取值为 true 时返回的表达式。
result expression 是任意有效的sql表达式。
esle else_result_expression
当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。else_result_expression 是任意有效的sql表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。
举例说明:
第二种:case搜索函数
参数介绍:
WHEN Boolean_expression 使用 CASE 搜索格式时所计算的布尔表达式。
Boolean_expression 是任意有效的布尔表达式。结果类型从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。
CASE 搜索函数 :返回结果值介绍:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。
如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
举例说明:
case when 具体用法就说到这里,谢谢各位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)