我有一个数据库,用于记录特定时间段内用户的属性。一个简化的例子:
UserID Year Measure1 Measures2
---------------------------------
1, 2000, 3, 4
1, 2001, 5, 6
我需要做的是将多行数据折叠成列
UserID Measure1_2000 Measure1_2001
-----------------------------------
1, 3, 5
最终结果是每行跟踪用户属性的时间。我更愿意将其写为函数或存储过程,其中折叠为列的年数作为参数提供,因此必须动态生成表结构。
我可以使用大表的pivot语句,但是列的数量是静态的,代码会很混乱,因为我必须将多种类型的数据折叠成列。
我尝试使用一些动态的sql,它会迭代while循环,加入一个用户ID列表来对着主表,但它太慢了。有没有人有任何想法?