单列转单行显示!!

ALEX_1111 2018-07-19 04:04:30
单列转单行显示,

表1:
Name
---------------------------
张三
李四
王五
赵六

想实现如此显示:"张三","李四","王五","赵六"
注意:是每个名字都带双引号显示,中间都有逗号,最后一个名字没有逗号。
要求:用pivot或者unpivot函数,不要用循环。

多谢!






...全文
261 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
别闹腰不好 2018-08-24
  • 打赏
  • 举报
回复
mysql group_concat()

Oracle的wm_concat
sql server FOR XML PATH('')
听雨停了 2018-07-19
  • 打赏
  • 举报
回复
引用 9 楼 吉普赛的歌的回复:
[quote=引用 8 楼 ALEX_1111 的回复:]
[quote=引用 4 楼 yenange 的回复:]
--仅适用于 sqlserver2017
USE tempdb
GO
IF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1
GO
CREATE TABLE t1(
[name] NVARCHAR(10)
)
INSERT INTO t1 VALUES ('张三'),('李四'),('王五')
GO
----- 以上为测试数据 -----

SELECT string_agg('"'+[name]+'"',',') AS result FROM t1





大姐,string_agg是2017以后的版本才有的,我的是2014,不带string_agg函数[/quote]
那就用 #3 老顾哥哥的[/quote] 大姐
吉普赛的歌 2018-07-19
  • 打赏
  • 举报
回复
引用 8 楼 ALEX_1111 的回复:
[quote=引用 4 楼 yenange 的回复:]
--仅适用于 sqlserver2017
USE tempdb
GO
IF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1
GO
CREATE TABLE t1(
[name] NVARCHAR(10)
)
INSERT INTO t1 VALUES ('张三'),('李四'),('王五')
GO
----- 以上为测试数据 -----

SELECT string_agg('"'+[name]+'"',',') AS result FROM t1





大姐,string_agg是2017以后的版本才有的,我的是2014,不带string_agg函数[/quote]
那就用 #3 老顾哥哥的
ALEX_1111 2018-07-19
  • 打赏
  • 举报
回复
引用 4 楼 yenange 的回复:
--仅适用于 sqlserver2017
USE tempdb
GO
IF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1
GO
CREATE TABLE t1(
	[name] NVARCHAR(10)	
)
INSERT INTO t1 VALUES ('张三'),('李四'),('王五')
GO
----- 以上为测试数据 -----

SELECT string_agg('"'+[name]+'"',',') AS result  FROM t1
大姐,string_agg是2017以后的版本才有的,我的是2014,不带string_agg函数
卖水果的net 2018-07-19
  • 打赏
  • 举报
回复
引用 5 楼 superwfei 的回复:

2017这个指令效率如何?大数据量实测效果如何


效率还是很不错的,比 for xml path 要好的多。
卖水果的net 2018-07-19
  • 打赏
  • 举报
回复
要求:用pivot或者unpivot函数,不要用循环。

用 pivot 来实现这个,很显然不科学!
文盲老顾 2018-07-19
  • 打赏
  • 举报
回复

2017这个指令效率如何?大数据量实测效果如何
吉普赛的歌 2018-07-19
  • 打赏
  • 举报
回复
--仅适用于 sqlserver2017
USE tempdb
GO
IF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1
GO
CREATE TABLE t1(
[name] NVARCHAR(10)
)
INSERT INTO t1 VALUES ('张三'),('李四'),('王五')
GO
----- 以上为测试数据 -----

SELECT string_agg('"'+[name]+'"',',') AS result FROM t1



文盲老顾 2018-07-19
  • 打赏
  • 举报
回复
create table #t(name nvarchar(50))
insert into #t
select '张三'
union all
select '李四'
union all
select '王五'
union all
select '赵六'

select stuff((select ',"'+name+'"' from #t for xml path('')),1,1,'')
文盲老顾 2018-07-19
  • 打赏
  • 举报
回复
stuff 和 for xml 很容易,pivot 实现这个是什么鬼
丰云 2018-07-19
  • 打赏
  • 举报
回复
又是面试题。。。

我也不会。。。。

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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