SQL 逆轴函数

SQL unpivot function

我有一个 table 有超过 100 行和 20 列(商店、销售额、规模、利润等)我怎样才能反透视到只有三列(商店、指标、价值)

当前状态

未来状态

我推荐使用 cross apply:

select t.store, v.metric, v.value
from t cross apply
     (values ('size', size),
             ('sales', sales),
             ('profit', profit),
             . . .
     ) v(metric, value);

请注意,这要求 value 列具有兼容的类型。

虽然您必须列出所有列,但您可以使用查询或电子表格生成列表,从而简化编写查询的工作。