5,889
社区成员
发帖
与我相关
我的任务
分享
create table Users (
uid int primary key not null,
uname varchar (30)
);
create table OrderInfo(
oid int primary key not null,
uid int ,
gid int
);
create table goods (
gid int primary key not null,
goods_name varchar (200)
);
insert into Users values(1, '张三');
insert into Users values(2, '李四');
insert into Users values(3, '王五');
insert into Users values(4, '赵六');
insert into Users values(5, '马七');
insert into goods values(1, '手机');
insert into goods values(2, '电脑');
insert into goods values(3, '汽车');
insert into goods values(4, '别墅');
insert into goods values(5, '相机');
insert into orderinfo values(1,1,1);
insert into orderinfo values(2,1,2);
insert into orderinfo values(3,1,3);
insert into orderinfo values(4,2,3);
insert into orderinfo values(5,2,1);
insert into orderinfo values(6,2,4);
insert into orderinfo values(7,3,1);
insert into orderinfo values(8,2,5);
insert into orderinfo values(9,3,4);
select * from Users
select * from goods
select * from orderinfo
--创建临时表
if OBJECT_ID('cb') is not null
drop table cb
if OBJECT_ID('usergoods') is not null
--创建视图
drop view usergoods
go
create view usergoods
as
select u.uname as 用户,g.gid,g.goods_name from orderinfo as i
left join Users as u on i.uid=u.uid
left join goods as g on g.gid=i.gid
go
--得到商品名
Declare @goods nvarchar(max),
@sql nvarchar(max)
select @goods=isnull(@goods+',','')+goods_name from goods
--拼接 将行转列数据导入到临时表的sql语句
set @sql='select * into cb from(
select * from usergoods
pivot
(
max(gid) for goods_name in('+@goods+')
)t)b'
exec (@sql)
select * from cb
/*
用户 手机 电脑 汽车 别墅 相机
李四 1 NULL 3 4 5
王五 1 NULL NULL 4 NULL
张三 1 2 3 NULL NULL
*/
create table Users (
uid int primary key not null,
uname varchar (30)
);
create table OrderInfo(
oid int primary key not null,
uid int ,
gid int
);
create table goods (
gid int primary key not null,
goods_name varchar (200)
);
insert into Users values(1, '张三');
insert into Users values(2, '李四');
insert into Users values(3, '王五');
insert into Users values(4, '赵六');
insert into Users values(5, '马七');
insert into goods values(1, '手机');
insert into goods values(2, '电脑');
insert into goods values(3, '汽车');
insert into goods values(4, '别墅');
insert into goods values(5, '相机');
insert into orderinfo values(1,1,1);
insert into orderinfo values(2,1,2);
insert into orderinfo values(3,1,3);
insert into orderinfo values(4,2,3);
insert into orderinfo values(5,2,1);
insert into orderinfo values(6,2,4);
insert into orderinfo values(7,3,1);
insert into orderinfo values(8,2,5);
insert into orderinfo values(9,3,4);
需要结果如下:
姓名 手机 电脑 汽车 别墅 相机
张三 是 是 是 否 否
李四 是 否 是 是 是
王五 是 否 否 是 否
赵六 否 否 否 否 否
马七 否 否 否 否 否
谢谢!