摘要:
行列互转,是一个经常遇到的需求。实现的方法,有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
冰羽的世界
阅读(6597)
推荐(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
冰羽的世界
阅读(275)
推荐(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
冰羽的世界
阅读(848)
推荐(0)
编辑