簡體   English   中英

SQL Server 2000中的交叉表查詢

[英]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

您可以使用minavg而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM