如下的一个表:
name age
jack 20
tom 30
nancy 20现在我想把所有年龄为20的人的姓名选择到一条记录里,得到这样的结果
jack,nancy
也就是把符合条件的记录中的name字段的值拼接起来,
不知道能否办到?
name age
jack 20
tom 30
nancy 20现在我想把所有年龄为20的人的姓名选择到一条记录里,得到这样的结果
jack,nancy
也就是把符合条件的记录中的name字段的值拼接起来,
不知道能否办到?
解决方案 »
- 记录有自增列字段,如何找到最高产量对应的自增列的值呢? 比如字段为: autoid是自增列 autoid,月份,日期,机台号,班次号,机台产量,分配比例 1
- 魔方算法-SQL版
- SqlServer的外连接问题(查询中包含不允许的外联接请求)
- 急~关于exec中执行sql语句的问题
- Windows2003(32)下安装SQL2008,开机启动后报错的有木有?
- 关于去掉重复数据的问题,求高手解答
- 创建带分区的表时报错.help!!!
- 下面的提示表明系统有什么问题没有解决
- SQL server2008镜像问题
- 主表的自增长id用作主细表的关联字段是否合适?
- 把MSSQL的存储过程转化成MySQL的存储过程
- 请教一条记录中多个日期如何进行判断
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-11-12 15:23:42
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([name] varchar(5),[age] int)
insert [huang]
select 'jack',20 union all
select 'tom',30 union all
select 'nancy',20
--------------开始查询--------------------------select a.[age],
stuff((select ','+[name] from [huang] b
where b.[age]=a.[age]
for xml path('')),1,1,'') 'name'
from [huang] a
WHERE [age]=20
group by a.[age]
----------------结果----------------------------
/*
age name
----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
20 jack,nancy
*/
--創建數據
create table #temp([name] varchar(5),[age] int)
insert #temp
select 'jack',20 union all
select 'tom',30 union all
select 'nancy',20--开始查询
SELECT stuff((select ','+[name] from #temp WHERE [age]=20 for xml path('')),1,1,'') [name]
create table #tb([name] varchar(5),[age] int)
insert #tb select 'jack',20 union all
select 'tom',30 union all
select 'nancy',20select * from #tb
declare @sql varchar(200)=''
select @sql =@sql+','+name from #tb where age ='20'
select stuff(@sql ,1,1,'')drop table #tb
--drop table tbcreate table tb([name] varchar(5),[age] int)insert tb select 'jack',20 union all
select 'tom',30 union all
select 'nancy',20
select distinct
--age,
stuff(
(
select ','+name
from tb t2
where t1.age = t2.age
for Xml path('')
),
1,1,''
) as name
from tb t1
where age =20
/*
name
jack,nancy
*/
drop table #aa
go
create table #aa
([name] varchar(5),
[age] int)
insert #aa select 'jack',20 union all
select 'tom',30 union all
select 'nancy',20
declare @name varchar(20)
select @name=isnull(@name+',','')+ name from #aa where age=20
print @name
/*
jack,nancy
*/