这个交叉表查询这么搞, 多谢
这个交叉表查询这么搞, 谢谢!
有表如下:
款号,尺寸,颜色, 重量,数量
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
------解决方案--------------------
是排版的问题还是什么问题?
------解决方案--------------------
试试这个:
有表如下:
款号,尺寸,颜色, 重量,数量
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
*/