T-SQL 使用 PIVOT 函数的使用方法

T-SQL using how to use PIVOT function

我在 SQL 中有以下 table 结构(使用 T-SQL): sqlfiddle: http://sqlfiddle.com/#!6/e5edc/1/0

数据看起来像这样:

现在我想转置结构,所以我得到以下内容:

应该是这样的:

我该怎么做? Pivot 函数看起来相当复杂,因为我是 SQL 的新手。有人可以帮助我朝着正确的方向前进吗? :-)

好的,您首先需要取消数据透视,这是在 cte 中完成的。那么您将需要再次旋转:

;with cte as(select initials, v, col from main
unpivot(v for col in([01_amount], [02_amount])) u)
select * from cte
pivot(max(v) for initials in([rw],[nb]))p

在 unpivot 部分,只需添加所有 24 个列名作为金额和活动位。在枢轴部分,只需添加所有可能的缩写值。

但是如果您不想手动列出首字母的所有可能值,那么您将需要进行一些带有逆透视和透视的动态查询。

这是 2 列的演示,您可以轻松扩展它 http://sqlfiddle.com/#!6/4cf36/2