2011年11月29日
摘要: 行列互转,是一个经常遇到的需求。实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现。在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和总结过。为了加深认识,再总结一次。行列互转,可以分为静态互转,即事先就知道要处理多少行(列);动态互转,事先不知道处理多少行(列)。--创建测试环境USE tempdb;GOIF OBJECT_ID('dbo.Orders') IS NOT NULL DROP TABLE dbo.Orders;GOCREATE TABLE dbo.Orders( orderid int NOT... 阅读全文
posted @ 2011-11-29 11:55 冰羽的世界 阅读(6651) 评论(0) 推荐(0)
摘要: 示例表 tb 数据如下id value—————1 aa1 bb2 aaa2 bbb2 ccc第一种SELECT id, [val]=( SELECT [value] +',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 第一种显示结果1 aa,bb,1 aa,bb,2 aaa,bbb,ccc,2 aaa,bbb,ccc,2 aaa,bbb,ccc,第二种SELECT id, ... 阅读全文
posted @ 2011-11-29 11:37 冰羽的世界 阅读(284) 评论(0) 推荐(0)
摘要: 下面的参数都是传入一个日期,试验时可用GETDATE()1、求当月第一天select @DATE-DAY(@DATE)+12、求下月第一天select DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)就是在当月第一天的基础上+1月3、求当月最后一天select DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1就是在下月第一天的基础上-1天4、求当月的天数selectDAY(DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1)就是对当月最后一天进行day运算5、求当月的所有日期SELECT DATEADD(DAY,NUMBE 阅读全文
posted @ 2011-11-29 11:27 冰羽的世界 阅读(858) 评论(0) 推荐(0)