我有下表:
我想将矩阵转换为这种格式:
其中新映射表表示一组选项与使用这些选项的一组模型之间的兼容性,而数值表示该特定模型的选项价格。
请记住,这只是来自更大表的一小部分示例,因此查询需要或多或少是动态的,而不是基于此示例中提供的选项或模型的数量进行硬编码。
有谁知道我怎么做到这一点?
致以最诚挚的问候,
答案 0 :(得分:3)
答案 1 :(得分:1)
我喜欢使用outer apply
执行此操作:
select v.*
from t outer apply
(values (option_id, 'model1', model1),
(option_id, 'model2', model2),
(option_id, 'model3', model3)
) v(option_id, model_name, price);
您只需在最终表格中为每个项目的values
列表添加更多行。
您也可以使用union all
,cross join
/ case
和unpivot
执行此操作。
但是,此方法使用横向连接,这些也非常强大,可用于其他目的。这是值得掌握的语法。
编辑:
我不确定"动态"意味着在这种情况下。你的表有列,或者它没有。您可以使用动态SQL根据输入参数或单个表的布局生成代码。它将遵循与上述相同的逻辑。