我在SQL中有以下表结构(使用T-SQL): sqlfiddle:http://sqlfiddle.com/#!6/e5edc/1/0
数据看起来像这样:
现在我想转置结构,以便我得到以下内容:
应该是这样的:
我该怎么做?由于我是SQL的新手,Pivot函数看起来相当复杂。有人可以帮我正确的方向吗? : - )
答案 0 :(得分:2)
好的,首先需要取消您的数据,这是在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