我希望以前有人尝试过这一点,并且在我进一步之前可以得到一些建议。
我希望在 sql-server 2000 中生成类似于交叉表查询的内容。
我有一个类似于以下的表结构:
Item Item_Parameter Parameter
id item_id id
desc parameter_id desc
value
我想要做的是通过查询/存储过程来展平数据,以便更轻松地构建报告。
理想的解决方案将产生如下结果:
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
如果您确定每个参数项组合最多有一个值,您可以使用一个简单的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
您可以使用min
or avg
代替max
:这应该不重要,因为每个 item_id 的每个参数只有一个值,
如果没有动态 SQL,就无法根据参数表中的描述返回列名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)