请教一句SQL,谢谢!
表一如下:
ID ProName NUM ProColor ProSize
1 产品 1 黑 1001
2 产品 1 白 1002
表二如下:
ID Size
1001 S
1002 M
1003 L
要求输出:
ProName ProColor S M L
产品 黑 1 0 0
产品 白 0 1 0
------解决方案--------------------declare @t1 table(ID int, ProName varchar(10),NUM int ,ProColor varchar(20), ProSize varchar(10))
insert into @t1 select 1, '产品 ',1, '黑 ', '1001 '
union all select 2, '产品 ',1, '白 ', '1002 '
declare @t2 table(ID varchar(10),Size varchar(5))
insert into @t2 select '1001 ', 'S '
union all select '1002 ', 'M '
union all select '1003 ', 'L '
select * from
(
select ProName,ProColor,Size from @t1 a right join @t2 b
on a.ProSize=b.ID
)tb
pivot
(count(size)
for size in ([S],[M],[L])
)as pit
where ProName is not null
order by ProColor desc
/*
ProName ProColor S M L
---------- -------------------- ----------- ----------- -----------
产品 黑 1 0 0
产品 白 0 1 0
(2 行受影响)
*/
------解决方案--------------------if object_id( 'pubs..表一 ') is not null
drop table 表一
go
create table 表一(ID int,ProName varchar(10),NUM int,ProColor varchar(10),ProSize int)
insert into 表一(ID,ProName,NUM,ProColor,ProSize) values(1, '产品 ',1, '黑 ', '1001 ')
insert into 表一(ID,ProName,NUM,ProColor,ProSize) values(2, '产品 ',1, '白 ', '1002 ')
if object_id( 'pubs..表二 ') is not null
drop table 表二
go
create table 表二(ID int,Size varchar(10))
insert into 表二(ID,Size) values(1001, 'S ')
insert into 表二(ID,Size) values(1002, 'M ')
insert into 表二(ID,Size) values(1003, 'L ')
select proname , procolor ,
(case when size = 'S ' then 1 else 0 end) as S,
(case when size = 'M ' then 1 else 0 end) as M,
(case when size = 'L ' then 1 else 0 end) as L
from
(
select a.proname,a.procolor,b.size from 表一 a,表二 b where a.prosize = b.id
) t
drop table 表一,表二
/*
proname procolor S M L
---------- ------