--基本表: Groupinfo
create table Groupinfo(groupid int,groupname nvarchar(20))
insert into Groupinfo values(1,'A组')
insert into Groupinfo values(2,'B组')--赛况表: Match
create table Match(groupid int,date datetime,score nvarchar(20))
insert into Match values(1,'2005-2-9','韩国 2-0 科威特')
insert into Match values(1,'2005-3-25','沙特 2-0 韩国')
insert into Match values(1,'2005-3-30','韩国 2-1 乌兹')
insert into Match values(2,'2005-2-9','日本 2-1 朝鲜')
insert into Match values(2,'2005-3-25','伊朗 2-1 日本')
insert into Match values(2,'2005-3-30','朝鲜 0-2 伊朗')
godeclare @s nvarchar(4000)
set @s=''
select @s=@s+','+quotename(groupname)+'=max(case groupid when '+rtrim(groupid)+' then score end)'
from Groupinfo
exec('select replace(convert(char(10),date,120),''-0'',''-'')'+@s+'
from Match group by replace(convert(char(10),date,120),''-0'',''-'')')
godrop table Groupinfo,Match/*--结果
A组 B组
--------------------- ------------------------ ------------------
2005-2-9 韩国 2-0 科威特 日本 2-1 朝鲜
2005-3-25 沙特 2-0 韩国 伊朗 2-1 日本
2005-3-30 韩国 2-1 乌兹 朝鲜 0-2 伊朗
--*/
create table Groupinfo(groupid int,groupname nvarchar(20))
insert into Groupinfo values(1,'A组')
insert into Groupinfo values(2,'B组')--赛况表: Match
create table Match(groupid int,date datetime,score nvarchar(20))
insert into Match values(1,'2005-2-9','韩国 2-0 科威特')
insert into Match values(1,'2005-3-25','沙特 2-0 韩国')
insert into Match values(1,'2005-3-30','韩国 2-1 乌兹')
insert into Match values(2,'2005-2-9','日本 2-1 朝鲜')
insert into Match values(2,'2005-3-25','伊朗 2-1 日本')
insert into Match values(2,'2005-3-30','朝鲜 0-2 伊朗')
godeclare @s nvarchar(4000)
set @s=''
select @s=@s+','+quotename(groupname)+'=max(case groupid when '+rtrim(groupid)+' then score end)'
from Groupinfo
exec('select replace(convert(char(10),date,120),''-0'',''-'')'+@s+'
from Match group by replace(convert(char(10),date,120),''-0'',''-'')')
godrop table Groupinfo,Match/*--结果
A组 B组
--------------------- ------------------------ ------------------
2005-2-9 韩国 2-0 科威特 日本 2-1 朝鲜
2005-3-25 沙特 2-0 韩国 伊朗 2-1 日本
2005-3-30 韩国 2-1 乌兹 朝鲜 0-2 伊朗
--*/
set @s=''
select @s=@s+','+quotename(groupname)+'=max(case groupid when '+rtrim(groupid)+' then score end)'
from Groupinfo
exec('select replace(convert(char(10),date,120),''-0'',''-'')'+@s+'
from Match group by replace(convert(char(10),date,120),''-0'',''-'')')
--基本表: Groupinfo
create table Groupinfo(groupid int,groupname nvarchar(20))
insert into Groupinfo values(1,'A组')
insert into Groupinfo values(2,'B组')
--后面这条是新加的
insert into Groupinfo values(3,'C组')--赛况表: Match
create table Match(groupid int,date datetime,score nvarchar(20))
insert into Match values(1,'2005-2-9','韩国 2-0 科威特')
insert into Match values(1,'2005-3-25','沙特 2-0 韩国')
insert into Match values(1,'2005-3-30','韩国 2-1 乌兹')
insert into Match values(2,'2005-2-9','日本 2-1 朝鲜')
insert into Match values(2,'2005-3-25','伊朗 2-1 日本')
insert into Match values(2,'2005-3-30','朝鲜 0-2 伊朗')
--后面这条是新加的
insert into Match values(3,'2005-3-10','朝鲜 0-1 伊朗')
我运行的脚本:declare @s nvarchar(4000)
set @s=''
select @s=@s+','+quotename(groupname)+'=max(case groupid when '+rtrim(groupid)+' then score end)'
from Groupinfo where groupid in ('1','2')
--其中加了 选择1,2两组的条件
exec('select replace(convert(char(10),date,120),''-0'',''-'')'+@s+'
from Match group by replace(convert(char(10),date,120),''-0'',''-'')')其我运行后变成:
A B
2005-2-9 韩国 2-0 科威特 日本 2-1 朝鲜
2005-3-10 null null
2005-3-25 沙特 2-0 韩国 伊朗 2-1 日本
2005-3-30 韩国 2-1 乌兹 朝鲜 0-2 伊朗这里面的第二行不是我想要的呀
set @s=''
select @s=@s+','+quotename(groupname)+'=max(case groupid when '+rtrim(groupid)+' then score end)'
from Groupinfo where groupid in ('1','2')
--其中加了 选择1,2两组的条件
exec('select replace(convert(char(10),date,120),''-0'',''-'')'+@s+'
from Match
where groupid in (''1'',''2'') --***这里也要加条件"选择1,2两组的条件"
group by replace(convert(char(10),date,120),''-0'',''-'')')