Mer*_*vyn 3 sql sql-server sql-server-2000
我希望以前有人试过这个,我可以先得到一些建议.
我希望在sql-server 2000中生成类似于交叉表查询的东西.
我有一个类似于以下的表结构:
Item Item_Parameter Parameter
id item_id id
desc parameter_id desc
value
Run Code Online (Sandbox Code Playgroud)
我想要做的是通过查询/存储过程来展平数据,以使构建报告更容易.
理想的解决方案将产生如下结果:
Parameter.desc[0] Parameter.desc[1] Parameter.desc[3]...
item.id[0] Item_Parameter.value Item_Parameter.value Item_Parameter.value
item.id[1] Item_Parameter.value Item_Parameter.value Item_Parameter.value
Run Code Online (Sandbox Code Playgroud)
如果您确定每个参数 - 项目组合最多只有一个值,您可以使用一个简单的group by:
select item_id
, max(case when parameter_id = 1 then value) Par1
, max(case when parameter_id = 2 then value) Par2
, max(case when parameter_id = 3 then value) Par3
from item_paramenter
group by
item_id
Run Code Online (Sandbox Code Playgroud)
你可以使用min或avg代替max:它无关紧要,因为每个item_id每个参数只有一个值,
如果没有动态SQL,则无法根据参数表中的描述返回列名.