将多行不同数据折叠为列的动态方法

时间:2016-02-18 17:23:54

标签: sql-server sql-server-2012

我有一个数据库,用于记录特定时间段内用户的属性。一个简化的例子:

UserID  Year Measure1 Measures2
---------------------------------
1,       2000,     3,     4
1,       2001,     5,     6

我需要做的是将多行数据折叠成列

UserID Measure1_2000  Measure1_2001
-----------------------------------
1,      3,               5

最终结果是每行跟踪用户属性的时间。我更愿意将其写为函数或存储过程,其中折叠为列的年数作为参数提供,因此必须动态生成表结构。

我可以使用大表的pivot语句,但是列的数量是静态的,代码会很混乱,因为我必须将多种类型的数据折叠成列。

我尝试使用一些动态的sql,它会迭代while循环,加入一个用户ID列表来对着主表,但它太慢了。有没有人有任何想法?

0 个答案:

没有答案