数据透视表显示

时间:2010-01-25 14:36:48

标签: sql

我有一些数据如下所示

ItemCode      Attr1    Attr1  InStock
ITEM-000001   43      S      1
ITEM-000001   52      L    2
ITEM-000006   42      R    1
ITEM-000006   44      R    2
ITEM-000009   56      R    1
ITEM-000011   40      R    2

通过使用数据透视表(或任何其他技术),我希望结果如

Output for ITEM-000001
     43   52

S    1    
L         2

其他人也一样。

1 个答案:

答案 0 :(得分:0)

我建议您更好地编写查询以进行以下布局,并使用报告工具完成输出,如图所示。大多数报告工具在将ItemCode列拉入节标题时应该没什么问题。

                   42   43   44   52   56
ITEM-000001   S         1
ITEM-000001   L                   2
ITEM-000006   R    1         2
ITEM-000009   R                         1

创建上述布局的查询如下:

SELECT  ItemCode, Attr2,
        SUM(CASE WHEN Attr1=42 THEN InStock ELSE 0 END) AS S42,
        SUM(CASE WHEN Attr1=43 THEN InStock ELSE 0 END) AS S43,
        SUM(CASE WHEN Attr1=44 THEN InStock ELSE 0 END) AS S44,
        SUM(CASE WHEN Attr1=52 THEN InStock ELSE 0 END) AS S52,
        SUM(CASE WHEN Attr1=56 THEN InStock ELSE 0 END) AS S56
FROM    StockData
GROUP BY ItemCode, Attr2

修改

如果Attr1和Attr2的值一致性不足以在这些列中的任何一列上执行标准数据透视,那么SQL不是解决问题的最佳工具。
您最好将数据返回到客户端应用程序,并允许它为您处理信息。在进入最终结果之前,您将能够更轻松地将任意列添加到结果中。