MSSQL教程之求日期所属星座的 T-SQL UDF (用户自定...
为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。函数usenorthwind
go
CREATEFUNCTIONGetStar(@datetime)
RETURNSvarchar(100)
AS
BEGIN
--仅一句SQL弄定
RETURN
(
--declare@datetime
--set@=getdate()
selectmax(star)
from
(
--星座,该星座入手下手日期所属月,该星座入手下手日期所属日
select魔羯座asstar,1as,1as
unionallselect水瓶座,1,20
unionallselect双鱼座,2,19
unionallselect牧羊座,3,21
unionallselect金牛座,4,20
unionallselect双子座,5,21
unionallselect巨蟹座,6,22
unionallselect狮子座,7,23
unionallselect童贞座,8,23
unionallselect天秤座,9,23
unionallselect天蝎座,10,24
unionallselect弓手座,11,22
unionallselect魔羯座,12,22
)stars
wheredateadd(day,-1,dateadd(month,-1,dateadd(year,datediff(year,0,@),0)))
=
(
selectmax(dateadd(day,-1,dateadd(month,-1,dateadd(year,datediff(year,0,@),0))))
from
(
select魔羯座asstar,1as,1as
unionallselect水瓶座,1,20
unionallselect双鱼座,2,19
unionallselect牧羊座,3,21
unionallselect金牛座,4,20
unionallselect双子座,5,21
unionallselect巨蟹座,6,22
unionallselect狮子座,7,23
unionallselect童贞座,8,23
unionallselect天秤座,9,23
unionallselect天蝎座,10,24
unionallselect弓手座,11,22
unionallselect魔羯座,12,22
)stars
where@>=dateadd(day,-1,dateadd(month,-1,dateadd(year,datediff(year,0,@),0)))
)
)
end
go
--测试
usenorthwind
selectdbo.getstar(birthdate),count(*)
fromemployees
groupbydbo.getstar(birthdate)
对于update操作,只需要把event中的旧行和新行值对调即可。 大家注意一点。如下面的例子: 总感觉自己还是不会SQL 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识 原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。 having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。 having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
页:
[1]