sql合并的问题

骑猪看海 2010-08-23 06:02:42
表名users

id name
1 张三

2 李四

3 王五
select name from users where id in(1,2)

结果二行:
张三
李四

怎么才能把这个二个结果合成另一张表在进行我的要查询,效果:
新表列名: 张三 李四
也就是合成后成了
select 张三,李四 from 合成后的新表
...全文
189 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
无涯大者 2010-08-24
  • 打赏
  • 举报
回复
嗯,OK!楼主看下这个代码是不是要的结果。。
创建测试表:
if Object_id('Test') is not null drop table test
CREATE TABLE [dbo].[test](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[result] [int] NULL
)
insert into [test](name,result) values('张三',90)
insert into [test](name,result) values('李四',80)
insert into [test](name,result) values('王五',70)


动态:
declare @sql varchar(8000) 
set @sql = ''
select @sql=@sql+
',isnull(sum( case name when '''+name+''' then Result end), 0 ) '''+name+ ''''
from (select distinct name from test )a
select @sql = stuff(@sql,1,1,'')
set @sql = 'select '+@sql+' from test'
print @sql
Exec(@sql)

结果

张三 李四 王五
90 80 70


无涯大者 2010-08-24
  • 打赏
  • 举报
回复
楼主参考下这个:
http://blog.csdn.net/happy664618843/archive/2010/03/05/5350835.aspx
做成动态的话还是有点难度的,能力欠佳,进来学习。。
End 2010-08-24
  • 打赏
  • 举报
回复
典型的行转列
lchy110 2010-08-24
  • 打赏
  • 举报
回复
你去找下行列转换吧 有动态替换的
挨踢直男 2010-08-24
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = ''
select @sql = @sql + ',sum(case when [name]='''+[name]+''''+' then result else null end) as '+[name] from test

select @sql = stuff(@sql,1,1,'')

set @sql = 'select '+@sql+' from test'

exec(@sql)


这个是动态的 按人的要求写的 你试试行不行
骑猪看海 2010-08-24
  • 打赏
  • 举报
回复
高手帮帮忙,在解决不出来都要被炒鱿鱼了。上面几位大侠的方法都写死了。我要的

CREATE TABLE [dbo].[test](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[result] [int] NULL
)
insert into [test](name,result) values('张三',90)
insert into [test](name,result) values('李四',80)
insert into [test](name,result) values('王五',70)
合并后的结果为:
列名 张三 李四 王五
内容 90 80 70

不能写死了,因为正式功能可能会有很多人
骑猪看海 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 onlylikews1 的回复:]
select (select name from users where id =1),(select name from users where id =2)
[/Quote]
这方法也太N了,那如果有多列呢select name from users where id in(1,2,3,4,5,6)。。。。。
骑猪看海 2010-08-24
  • 打赏
  • 举报
回复
骑猪看海 2010-08-24
  • 打赏
  • 举报
回复
非常感谢大家,此问题以解决,马上结贴
夺命胖子 2010-08-24
  • 打赏
  • 举报
回复
ID name maths language

1 张三 100 50
2 李四 80 60
************************************
姓名 张三 李四

数学 100 80

语文 50 60
************************************
如果字段是固定的, ID name maths language

要显示下面的效果,CSS 样试就可以吧

只是横排数据,竖排了,,还是我穿越了
Rometer 2010-08-24
  • 打赏
  • 举报
回复
学习学习。
hbh850121 2010-08-24
  • 打赏
  • 举报
回复
楼上的方法可以做到啊~
juxianxiang 2010-08-23
  • 打赏
  • 举报
回复
学习,貌似很复杂,应该有其他办法解决。
onlylikews1 2010-08-23
  • 打赏
  • 举报
回复
select (select name from users where id =1),(select name from users where id =2)
wuyq11 2010-08-23
  • 打赏
  • 举报
回复
字符串拼接
create function fn_test(@pk int,@type int)
returns varchar(20)
as
begin
declare @s varchar(20)
select @s=isnull(@s+',','')+ltrim([name]) from users where id=@id
return @s
end
go
http://topic.csdn.net/u/20100412/22/fec647ea-73d0-480b-92e9-8af61ef3c978.html
threenewbee 2010-08-23
  • 打赏
  • 举报
回复
select name from users where id in(1,2) groupby name

如果要行列颠倒,参考:http://blog.csdn.net/namexing1985/archive/2009/01/21/3849139.aspx

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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