日期:2014-05-18  浏览次数:20583 次

跪求一交叉表查询语句急....................
表a
    客户名称     产品名称     销量       折扣
    张三                   a               100         100
    张三                   c               100         100
    李四                   b               100         150
    李四                   a               120         110
    王五                   c               100         120
      ..                     d                 ..           ..
      ..                     ..               ..           ..
      ..                     ..               ..           ..
求一查询语句得到如下结果:
    客户名称     备注       a             b           c           d       ..
      张三           销量       100                   100  
      张三           折扣       100                   100
      李四           销量       120       100      
      李四           折扣       110       150
      王五           销量                               100
      王五           折扣                               120  
      ..                                  
      ..

------解决方案--------------------
declare @t table(客户名称 varchar(10),产品名称 varchar(10),销量 int,折扣 int)
insert into @t select '张三 ', 'a ',100,100
union all select '张三 ', 'c ',100,100
union all select '李四 ', 'b ',100,150
union all select '李四 ', 'a ',120,110
union all select '王五 ', 'c ',100,120

SELECT * FROM
(
SELECT 客户名称,产品名称, 列 , 列值
FROM
(SELECT 客户名称,产品名称, 销量, 折扣
FROM @t) p
UNPIVOT
(列值 FOR 列 IN
(销量, 折扣)
)AS unpvt
) TB
PIVOT
(MAX(列值)
FOR 产品名称 IN ([a],[b]