--create table test ( id int identity (1,1),names nvarchar (50),subject nvarchar (50),source decimal(18, 0) )
insert into [test] ([names],[subject],[source]) values (n'張三',n'語文',60)
insert into [test] ([names],[subject],[source]) values (n'李四',n'數學',70)
insert into [test] ([names],[subject],[source]) values (n'王五',n'英語',80)
insert into [test] ([names],[subject],[source]) values (n'王五',n'數學',75)
insert into [test] ([names],[subject],[source]) values (n'王五',n'語文',57)
insert into [test] ([names],[subject],[source]) values (n'李四',n'語文',80)
insert into [test] ([names],[subject],[source]) values (n'張三',n'英語',100)
select * from test;
select names,
--動態交叉表
declare @sql varchar(8000)
set @sql = 'select names,'
select @sql = @sql + 'sum(case subject when '''+subject+''' then source else null end) as '''+subject+''','
from (select distinct subject from test) as a
print @sql;
select @sql = left(@sql,len(@sql)-1) + 'from test group by names'
print @sql;
exec(@sql)
create table 表1(組名 varchar(10),成員1id varchar(10),成員2id varchar(10),成員3id varchar(10))
--插入資料
insert into 表1
select '衝鋒組','1','2','3' union
select '後衛組','2','3','4'
select * from 表1
create table 表2(成員id varchar(10),成員姓名 varchar(10))
--插入資料
insert into 表2
select '1','張三' union
select '2','李四' union
select '3','王五' union
select '4','陸二'
--測試語句
select a.組名,
成員1=(select 成員姓名 from 表2 b where a.成員1id=b.成員id),
成員1=(select 成員姓名 from 表2 b where a.成員2id=b.成員id),
成員1=(select 成員姓名 from 表2 b where a.成員3id=b.成員id)
from 表1 a
select 表1.組名, (select 表1.成員姓名 from 表2 b where 表1.成員1id=表2.成員id) as 成員1id,
(select 表1.成員姓名 from 表2 b where 表1.成員2id=表2.成員id) as 成員2id,
(select 表1.成員姓名 from 表2 b where 表1.成員3id=表2.成員id) as 成員3id
from 表1,表2
create table tt
(id int primary key identity(1,1),
week varchar(50),
sday varchar(50),
people varchar(50)
)insert into tt values('周一','上午','李四')
insert into tt values('周一','下午','gg')
insert into tt values('周二','上午','33')
insert into tt values('周二','下午','55')
select *from tt;
select a.week as 星期, 上午 = max(case when a.sday ='上午' then a.people else null end ),下午= max(case when a.sday='下午' then a.people else null end )from tt a group by a.week
create table score (
姓名 varchar(50) ,
課程 varchar(50),
分數 int
)insert into score values('張三','語文',74)
insert into score values('張三','數學',83)
insert into score values('張三','物理',93)
insert into score values('李四','語文',74)
insert into score values('李四','數學',84)
insert into score values('李四','物理',94)
select * from score;
select * from score pivot(max(分數) for 課程 in (語文,數學,物理))a;
交叉表例項
建表 在查詢分析器裡執行 create table test id int identity 1,1 not null name nvarchar 50 collate chinese prc ci as null subject nvarchar 50 collate chinese prc ci...
SQL交叉表的例項
很簡單的乙個東西,見網上好多朋友問 怎麼實現交叉表?以下是我寫的乙個例子,資料庫基於sql server 2000。交叉表例項 建表 在查詢分析器裡執行 create table test id int identity 1,1 not null name nvarchar 50 collate c...
詳細介紹SQL交叉表的例項
資料庫基於sql server 2000。交叉表例項 建表 在查詢分析器裡執行 create table test id int identity 1,1 not null name nvarchar 50 collate chinese prc ci as null subject nvarcha...