34,588
社区成员
发帖
与我相关
我的任务
分享
--刚才有点手误
select orderid,styeid,(case sizename when 1 then stylecolor else ''end ) '1',
(case sizename when 3then stylecolor else ''end ) '3',
(case sizename when 5then stylecolor else ''end ) '5',
(case sizename when 7then stylecolor else ''end ) '7',
(case sizename when 9then stylecolor else ''end ) '9',
(case sizename when 11then stylecolor else ''end ) '11',
stylebrand
from tbl
select orderid,styeid,(case sizename when 1 then stylecolor else ''end ) '1',
(case sizename when 3then stylecolor else ''end ) '3,
(case sizename when 5then stylecolor else ''end ) '5,
(case sizename when 7then stylecolor else ''end ) '7,
(case sizename when 9then stylecolor else ''end ) '9,
(case sizename when 11then stylecolor else ''end ) '11',
stylebrand
from tbl
create table tb (OrderID int,StyleID int,SizeName int,StyleColor varchar(20),StyleBrand varchar(50),StyleListQty int)
insert into tb(OrderID,styleid,sizename,stylecolor,stylelistqty) select 16 , 2 ,1,'Black',300
insert into tb(OrderID,styleid,sizename,stylecolor,stylelistqty) select 16,2 , 3 , 'Black' , 300
insert into tb(OrderID,styleid,sizename,stylecolor,stylelistqty) select 16 , 2 , 5 , 'Black' , 200
insert into tb(OrderID,styleid,sizename,stylecolor,stylelistqty) select 16 , 2 , 7 , 'Black' , 800
insert into tb(OrderID,styleid,sizename,stylecolor,stylelistqty) select 16 , 2 , 9 , 'Black' , 200
insert into tb(OrderID,styleid,sizename,stylecolor,stylelistqty) select 16 , 2 , 11 , 'Black' , 200
declare @sql varchar(1000)
set @sql='select orderid,styleid'
select @sql=@sql+',['+cast(SizeName as varchar)+']=max(case SizeName when '''+cast(SizeName as varchar)+''' then StyleListQty else 0 end)' from tb
set @sql=@sql+',stylecolor,stylebrand from tb group by orderid,styleid,stylecolor,stylebrand'
exec(@sql)
我只是进行了行和列的转换 我没有使用聚合函数 不用加 GROUP BY
要是需要使用MIN MAX SUM AVG ...
就改一下 例如:求和
select orderid,styeid,sum(case sizename when 1 then stylecolor else ''end ) '1',
sum(case sizename when 3then stylecolor else ''end ) '3',
sum(case sizename when 5then stylecolor else ''end ) '5',
sum(case sizename when 7then stylecolor else ''end ) '7',
sum(case sizename when 9then stylecolor else ''end ) '9',
sum(case sizename when 11then stylecolor else ''end ) '11',
stylebrand
from tbl group by orderid,styeid,stylebrand