[英]Crosstab Query in SQL Server 2000
我希望以前有人试过这个,我可以先得到一些建议。
我希望在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
或avg
而不是max
:它无关紧要,因为每个item_id的每个参数只有一个值,
如果没有动态SQL,则无法根据参数表中的描述返回列名。
我最终使用存储过程( http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables )动态创建一个sql语句。
谢谢Dan和Andomar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.