日期:2014-05-16  浏览次数:20598 次

这个交叉表查询这么搞, 谢谢!
有表如下:
款号,尺寸,颜色,  重量,数量
A,   1-2, 白色,  10  ,1000  
A,   1-2, 黑色,  10  ,1000  
A,   2-3, 白色,  20  ,1000  
B,   2-3, 黑色,  20  ,1000  

要显示如下表:
款号,颜色,      1-2          2-3
             重量 数量    重量 数量 
A   ,白色    10   1000    20   1000
A   ,黑色    10   1000
B   ,黑色                 20   1000

------解决方案--------------------
是排版的问题还是什么问题?
------解决方案--------------------
试试这个:

--drop table tb

create table tb(款号 varchar(10),尺寸 varchar(10),颜色 varchar(10),重量 int,数量 int)

insert into tb
select 'A',   '1-2', '白色',  10  ,1000  union all
select 'A',   '1-2', '黑色',  10  ,1000  union all
select 'A',   '2-3', '白色',  20  ,1000  union all
select 'B',   '2-3', '黑色',  20  ,1000  
go


select 款号,颜色,
       MAX(case when 尺寸='1-2' then 重量 else null end) '1-2重量',
       MAX(case when 尺寸='1-2' then 数量 else null end) '1-2数量',
       MAX(case when 尺寸='2-3' then 重量 else null end) '2-3重量',
       MAX(case when 尺寸='2-3' then 数量 else null end) '2-3数量'
       
from tb
group by 款号,颜色
/*
款号 颜色 1-2重量 1-2数量 2-3重量 2-3数量
A 白色 10 1000 20 1000
A 黑色 10 1000 NULL NULL
B 黑色 NULL NULL 20 1000
*/