SQL Server 2000中的交叉表查询

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)

And*_*mar 5

如果您确定每个参数 - 项目组合最多只有一个值,您可以使用一个简单的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)

你可以使用minavg代替max:它无关紧要,因为每个item_id每个参数只有一个值,

如果没有动态SQL,则无法根据参数表中的描述返回列名.