use northwind go CREATE FUNCTION GetStar(@ datetime) RETURNS varchar(100) AS BEGIN --仅一句 SQL 搞定 RETURN ( --declare @ datetime --set @ = getdate() select max(star) from ( -- 星座,该星座开始日期所属月,该星座开始日期所属日 select ''''魔羯座'''' as star,1 as [month],1 as [day] union all select ''''水瓶座'''',1,20 union all select ''''双鱼座'''',2,19 union all select ''''牧羊座'''',3,21 union all select ''''金牛座'''',4,20 union all select ''''双子座'''',5,21 union all select ''''巨蟹座'''',6,22 union all select ''''狮子座'''',7,23 union all select ''''处女座'''',8,23 union all select ''''天秤座'''',9,23 union all select ''''天蝎座'''',10,24 union all select ''''射手座'''',11,22 union all select ''''魔羯座'''',12,22 ) stars where dateadd(day,[day]-1,dateadd(month,[month]-1,dateadd(year,datediff(year,0,@),0))) = ( select max(dateadd(day,[day]-1,dateadd(month,[month]-1,dateadd(year,datediff(year,0,@),0)))) from ( select ''''魔羯座'''' as star,1 as [month],1 as [day] union all select ''''水瓶座'''',1,20 union all select ''''双鱼座'''',2,19 union all select ''''牧羊座'''',3,21 union all select ''''金牛座'''',4,20 union all select ''''双子座'''',5,21 union all select ''''巨蟹座'''',6,22 union all select ''''狮子座'''',7,23 union all select ''''处女座'''',8,23 union all select ''''天秤座'''',9,23 union all select ''''天蝎座'''',10,24 union all select ''''射手座'''',11,22 union all select ''''魔羯座'''',12,22 ) stars where @ >= dateadd(day,[day]-1,dateadd(month,[month]-1,dateadd(year,datediff(year,0,@),0))) ) ) end
go --测试 use northwind select dbo.getstar(birthdate),count(*) from employees group by dbo.getstar(birthdate)
[其他]传递和返回数据到一个Delphi编写的UDF [MySql]Windows上的MySQL UDF开发 [Sql Server]用于执行(计算) 字符串表达式 的 T-SQL 存储过程 [Sql Server]Building a T-SQL Loop [Sql Server]T-SQL Extractor [Sql Server]T-SQL: 读取磁盘文件 [Sql Server]T-SQL 存储过程创建 PDF 格式文件(报表) [Sql Server]T-SQL 查询中使用的函数之系统函数 [Sql Server]T-SQL 生成 两个新的真正的公历年历 [Sql Server]浅谈SQL SERVER 2000 T-SQL 的运行
|