【发布时间】:2020-12-03 08:59:11
【问题描述】:
我正在使用在临时表上执行的 unpivot 函数,它给出的结果如下所示。
Select User, Grade, Experience FROM @TempTable
unpivot
(
[Experience] For [Grade] IN ([L1],[L2],[L3],[L4])
) unpiv;
输出
[User] [Grade] [Experience]
1 L1 2
1 L2 3
1 L3 1
1 L4 0
2 L1 1
2 L2 2
2 L3 0
2 L4 0
除了经验栏,我还想有百分比栏,应该按用户分组。例如,如果我们考虑用户 1,对于 L1 等级,它将是 2/6 *100,对于 L2,它将是 3/6 * 100
对如何实现有什么建议吗?
类似于 Experience/Sum(Experience) * 100,但 SUM 应按用户分组。
【问题讨论】:
-
样本数据和预期结果将帮助我们帮助您。与限制性更强的
UNPIVOT运算符相比,VALUES表结构很可能会让您更轻松。 -
Experience / sum(Experience) over(partition by user rows between unbounded preceding and unbounded following)? -
@GSerg 我不知道如何应用 where 和 group by [Experience]/SUM([Experience]) OVER (PARTITION BY [Experience])* 100
标签: sql sql-server pivot aggregate unpivot