小妖女 发表于 2015-1-16 22:38:07

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中的旧行和新行值对调即可。

蒙在股里 发表于 2015-1-19 19:50:20

大家注意一点。如下面的例子:

透明 发表于 2015-1-28 10:11:16

总感觉自己还是不会SQL

仓酷云 发表于 2015-2-5 20:32:16

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

飘灵儿 发表于 2015-2-13 13:16:51

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

因胸联盟 发表于 2015-3-3 21:50:54

原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。

飘飘悠悠 发表于 2015-3-18 22:26:04

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

愤怒的大鸟 发表于 2015-3-26 19:48:54

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
页: [1]
查看完整版本: MSSQL教程之求日期所属星座的 T-SQL UDF (用户自定...