问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL查询 多条记录拼接成一条记录

发布网友 发布时间:2022-04-09 04:42

我来回答

3个回答

懂视网 时间:2022-04-09 09:03

 1 select PERSON_NAME from S_PROJECT_MEMBER where PROJECT_ID = ‘2c9081473e2f8bda013e3028e4700049‘;  

技术分享

技术分享

先直接上代码吧!-------------------------有问题的,麻烦指出--------------------------------------------------------

select 
 CAST(stuff((
 select distinct ‘,‘+PERSON_NAME 
 from S_PROJECT_MEMBER 
 where PROJECT_ID = ‘2c9081473e2f8bda013e3028e4700049‘ for xml path(‘‘)),1,1,‘‘) AS varchar(1000)
 ) 
 AS PERSON_NAMES 
from S_PROJECT_MEMBER 
where PROJECT_ID = ‘2c9081473e2f8bda013e3028e4700049‘ GROUP BY PROJECT_ID; 

这里用的知识点有:

for xml path() 函数:

--这里用来做字符串拼接

CAST()函数:

--CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型
cast( "abcdefg" as varchar(2000));

STUFF()函数:

--STUFF()函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符。

--select stuff(列名,开始位置,长度,替代字符串)

DISTINCT 关键字:

--这里可以理解为去重,具体可以百度

AS 关键字:

--取别名 

GROP BY :

--用于分组

下面通过具体的例子来说明吧:    来自于:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

create table hobby(
hobbyId varchar(32),
hName varchar(32)
)

insert into hobby values(‘1‘,‘爬山‘);
insert into hobby values(‘2‘,‘游泳‘);
insert into hobby values(‘3‘,‘爬山‘);
--将查询结果根据行输出成XML格式
SELECT * FROM hobby FOR XML PATH;
技术分享
--改变XML行节点的名称
SELECT * FROM hobby FOR XML PATH(‘MyHobby‘);
技术分享
--改变XML列节点的名称
SELECT hobbyID as ‘MyCode‘,hName as ‘MyName‘ FROM hobby FOR XML PATH(‘MyHobby‘);
技术分享
--构建我们喜欢的输出方式
SELECT ‘[ ‘+hName+‘ ]‘ FROM hobby FOR XML PATH(‘‘);
技术分享

现在我对例子进行应用:

--应用
select distinct ‘,‘+hobbyId from hobby for xml path(‘‘);
技术分享
-- for xml path(‘‘) 解决连接问题
select hName,(select distinct ‘+‘+hobbyId from hobby h where h.hName = hName for xml path(‘‘)) AS A 
from hobby 
group by hName;
技术分享
-- stuff(String,1,1,‘‘) 去除开始的连接符 +1+2+3 --> 1+2+3
select hName,stuff((select distinct ‘+‘+hobbyId from hobby for xml path(‘‘)),1,1,‘‘) AS A 
from hobby 
group by hName;
技术分享

--需要查询结果
‘爬山‘ ‘1‘+‘3‘
‘游泳‘ ‘2‘

--方法一
select hName,stuff((select distinct ‘+‘+hobbyId from hobby where hName = B.hName for xml path(‘‘)),1,1,‘‘) AS A 
from hobby B 
group by hName;
--方法二 SELECT B.hName,LEFT(StuList,LEN(StuList)-1) as hobby FROM ( SELECT hName, (SELECT hobbyId+‘,‘ FROM hobby WHERE hName=A.hName FOR XML PATH(‘‘)) AS StuList FROM hobby A GROUP BY hName ) B
结果:
技术分享

第一次写笔记。。。。。2016.06.25

 

SQL基础知识--多行查询结果拼接

标签:

热心网友 时间:2022-04-09 06:11

select
departdate --发车时间

,sum(num) --售票张数

,(select sum(num) from table where departdate=t.departdate and stationlvl=N'一级站') --一级站

,(select sum(num) from table where departdate=t.departdate and stationlvl=N'二级站') --二级站
,(select sum(num) from table where departdate=t.departdate and stationlvl=N'*站') --*站

from table t
group by departdate

热心网友 时间:2022-04-09 07:29

sqlserver写法,为了验证结果,在你提供数据基础上加了条数据,具体如下

创建表及数据

create table test
(departdate varchar(10),
stationlvl varchar(10),
num int)

insert into test values ('2014-07-28','一级站',200)
insert into test values ('2014-07-28','二级站',100)
insert into test values ('2014-07-28','*站',50)
insert into test values ('2014-07-29','一级站',300)
insert into test values ('2014-07-29','二级站',200)
insert into test values ('2014-07-29','*站',100)
insert into test values ('2014-07-30','*站',90)--这条为新增

执行

declare @sql varchar(4000)
set @sql = 'select [departdate]'
select @sql = @sql + ',sum(isnull(case [stationlvl] when '''+[stationlvl]+''' then [num] end,0)) as 
['+[stationlvl]+']'
from (select distinct [stationlvl] from [test]) as a
select @sql = @sql+' from [test] group by [departdate]'
exec(@sql)

结果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我家300多k的网速为什么玩cf总是很迟钝,连切枪都很慢 CF切换枪的速度很慢 ...东西需要输入apple ID密码 我不知道怎么办?更新微信需要appleID_百... ...一遍id苹果手机的每次更新软件都需要输入id和密码请问怎么解决_百度... ...ID 我不知道密码是什么,也不懂怎么申请,想下个软件都下不了... 微信直播王者荣耀有收益吗 王者荣耀新手主播能挣多少 华为是如何进入手机市场的? ...用的那种安在船边上承鱼竿的那个座子中文叫什么?就是下图中的那个... 放在哪里不动钓鱼的叫什么? 地铁的 车门 夹住人会像电梯的门一样自动打开吗? 光明牛奶,和牛奶棚的牛奶有什么区别 求一个3Dmax的简单三维动画,谢谢了哦,我做了两个机器人,我想做机器人跳舞,做好了两个模型,求帮忙 被地铁门夹了怎么办? 闭经七八年有什么办法让他来吗? 牛奶棚 场中路店怎么样 牛奶棚 四平路店怎么样 3D MAX创建选择集合? 谁可以发一个简单的3DMAX做的机器人原文件和渲染后的给我? 牛奶棚 仙霞路店怎么样 牛奶棚 陈春路店怎么样 临时的光明牛奶房的牛奶正宗的吗 3dmax教程:怎么在3dmax中制作特效机器人 牛奶棚1.5升鲜牛奶多少钱一桶? 《长江之歌》是什么曲式? 长江之歌的资料有没有?急用!!! 徽信怎么注册 我的手机里有俩个徽信想用别人的手机号。登录一个微信怎么登陆? 用别人手机号加微信徽信不小心删除了,怎么登录? 怎么查询自己的手机号码绑定哪个 地铁门将关时,能用手挡着不让关吗 光明牛奶棚牛奶是每天上新货,还是几天上一次 我想要找20首非常著名的古诗词初中阶段没有学过的 26岁以前闭经七八年后看好来月经会怀孕吗 闭经7年还可能出现更年期症状吗 地铁都是怎么关门的?关门的时候会夹到人吗? 审驾驶证流程是什么 谁能给我找个·简单的3dmax机器人教程!! 古诗词大全20首以内 闭经好多年了怎么治 闭经已经6年 上海地铁女乘客被屏蔽门夹住经送医抢救身亡,遇到车门“夹人”怎样处置? 推荐我20首经典的诗词 我绝经五年了,身上忽冷忽热 女人绝经以后心理和身体有什么变化 驾照年审及流程是怎么样的 闭经三年,怎么办? 极端天气使用秋田AEO的AEO-CX7511-S 5.8G大功率无线网桥可以吗? 地铁屏蔽门的原理和电梯外边的那一半门的原理一样吗? 女性闭经后,衰老不可避免,但也有哪些好处会随之而来?