求SQL语句

hubinasm 2005-10-24 10:37:48
ID RESULT
4 AB
5 CD

怎样转换成这样的形式?
4 5
AB CD

4,5变成行标题,AB,CD做为行内容,SQL语句应该怎么写啊?
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlp321002 2005-10-24
  • 打赏
  • 举报
回复
--看不到你的表结构,不知道你的一些字段,从哪儿来的!!
--你最好print @sql 拼SQL,或者你参考我给你写的例子!!!
hubinasm 2005-10-24
  • 打赏
  • 举报
回复
这句话应该怎么加上?
+',max(case when MatchID = '''+ MatchID + ''' then ShowResult else '''' end) ['+ cast(HostTeam as varchar(50))+']'
hubinasm 2005-10-24
  • 打赏
  • 举报
回复
create table #tmp(ID int Identity(1,1),MatchID int,HostTeam varchar(50))
insert into #tmp(MatchID,HostTeam) select MatchID,HostTeam from MatchScene where WheelID = 1
declare @sql varchar(8000)
set @sql='select UserName'
select @sql=@sql
+',sum(case MatchID when '''+cast(MatchID as varchar(10))+''' then Result else 0 end) [Result'+ cast(ID as varchar(5))+']'
from (select ID,MatchID,HostTeam from #tmp) ab
select @sql=@sql+' from (select a.UserID as UserID,UserName,MatchID,Guess,Result,replace(Guess,Result,''<font color=red>''+Result+''</font>'') as showResult from UserMoneySevenDetail a
left outer join Users b on a.UserID = b.UserID
where WheelID = 1 ) as ttt group by UserName'
print(@sql)
exec(@sql)
drop table #tmp
zlp321002 2005-10-24
  • 打赏
  • 举报
回复
To:zlp321002(飘过)
4,5 是不固定的。能用交叉数据报表的形式写吗?我需要那样写的语句。谢谢
-----------------------------------------------------------------------
--我用的动态SQL,就是交叉表,4,5我没有固定,你测试下??
hubinasm 2005-10-24
  • 打赏
  • 举报
回复
如果RESULT为数字,我可以这样写:
select sum(case id when 4 then result else 0 end) as [4],
sum(case id when 5 then result else 0 end) as [5]
from table1
group by h

但是现在RESULT不是数字,所以不知道该怎么写了
To:zlp321002(飘过)
4,5 是不固定的。能用交叉数据报表的形式写吗?我需要那样写的语句。谢谢
zlp321002 2005-10-24
  • 打赏
  • 举报
回复
--测试环境
Create Table # (ID varchar(10),RESULT varchar(20))
insert into # select 4,'AB'
union all select 5,'CD'

--动态SQL
declare @s varchar(2000)
set @s=''
select @s=@s+',['+ID+']=max(case when ID='''+ID+''' then RESULT else '''' end) '
from #
GROUP BY ID
set @s='SELECT '+stuff(@s,1,1,'')+' From # '
print @s
exec(@s)
--结果
4 5
-------------------- --------------------
AB CD

--删除测试环境
DROP TABLE #

ljf_ljf 2005-10-24
  • 打赏
  • 举报
回复
select result as id form tablename.<<<<不知道對不對
zlp321002 2005-10-24
  • 打赏
  • 举报
回复
--
http://community.csdn.net/Expert/topic/4345/4345763.xml?temp=.9756586
UserID ID RESULT
1 4 AB
1 5 CD
2 4 EF
2 5 gh

结果:
UserID 4 5
1 AB CD
2 EF GH



----测试环境
Create Table # (UserID varchar(10),ID varchar(10),RESULT varchar(20))
insert into # select 1,4,'AB'
union all select 1,5,'CD'
union all select 2,4,'EF'
union all select 2,5,'gh'
--动态SQL
declare @s varchar(2000)
set @s='SELECT UserID'
select @s=@s+',['+ID+']=max(case when ID='''+ID+''' then RESULT else '''' end) '
from #
GROUP BY ID
set @s=@s+' From # GROUP BY UserID'
exec(@s)
--结果
UserID 4 5
---------- -------------------- --------------------
1 AB CD
2 EF gh

--删除测试环境
Drop Table #


hubinasm 2005-10-24
  • 打赏
  • 举报
回复
UserID ID RESULT
1 4 AB
1 5 CD
2 4 EF
2 5 gh

获得结果:
UserID 4 5
1 AB CD
2 EF GH

语句怎么实现?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧