今天学到一招不需要复杂的SQL函数来实现动态行转列,首先什么是动态行转列,我们来看一个例子。如图1的表设计,我们能看到不同渠道的付款金额、付款订单数量、付款商品件数、付款金额(去税)如果你想要展示不同渠道的付款金额、付款订单数量、付款商品件数、付款金额(去税)在列上如图2所示。即渠道+付款金额合并为一个字段展示在不同的列上,如果涉及多个渠道也不需要手动添加。首先在图1的基础上对付款金额、付款订单数量、付款商品件数、付款金额(去税)进行列转行。
图1
图2
这几个字段可通过逆透视列转行后如图3所示,渠道+指标列进行拼接即可形成我们想要图4所示的渠道+指标字段。
图3
图4
对拼接后的渠道指标字段进行行转列,如图5所示,即可实现新增渠道时,动态新增对应渠道的付款金额、付款订单数量、付款商品件数、付款金额(去税)。
图5
总结一下,对某个字段的枚举值进行动态行转列操作可根据三步走:
第一步:首先对需要拼接的字段(付款金额、付款订单数量、付款商品件数)进行列转行
第二步:对需要把枚举值转换到列上的字段(渠道)和转为行的字段进行拼接
第三步:对拼接后的字段进行行转列
大功告成,如果新增了一些渠道,也可自动实现渠道+字段的转换。