嗨, 大家好: 网站在新年后正式开通,欢迎大家加入我们,共同维护一个良好氛围的中国技术社区。 欢迎举报不良帖子,欢迎提供建议。
我们的QQ群:136102234,欢迎进群找答案,里边会有很多资深的大师们。 point overflow

昨天去面试,遇到一道SQL题,不会解,先贴上题目:

year dept
2008 dev
2008 sale
2009 dev
2010 hr
2010 man
2010 market
2011 service

需求:写一个sql实现以下查询结果:

year dept
2008 dev,sale
2009 dev
2010 hr,man,market
2011 service

请问如何写这个sql??

提问了 2016-03-17 17:32:28

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%


这个应该是准确的mysql答案了。

select year,GROUP_CONCAT(dept) from tablex group by year

永久链接

已回答 2016-03-17 17:34:28

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%

先来个sqlserver的

create table #testTable(year varchar(4),dept varchar(16))

insert into #testTable values("2008","dev")
insert into #testTable values("2008","sale")
insert into #testTable values("2009","dev")
insert into #testTable values("2010","hr")
insert into #testTable values("2010","man")
insert into #testTable values("2010","market")
insert into #testTable values("2011","service")

select year,dept=STUFF((select ","+ltrim(dept) from #testTable where year=t.year for XML path("")),1,1,"")
from #testTable t
group by year

-- drop table #testTable
永久链接

已回答 2016-03-17 17:33:47

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%

你的回答
切换预览

关注这个问题

邮件:

登录之后,你可以在这里订阅任何更新。

RSS:

回答

回答和评论

Markdown基本语法

  • *italic* or _italic_
  • **bold** or __bold__
  • 链接:[文本](http://url.com/ "标题")
  • 图片?![alt 文本](/path/img.jpg "标题")
  • 编号列表: 1. Foo 2. Bar
  • 如果想要换行,只需要在前一行结尾处插入2个空格即可。
  • 支持基本HTML标记

问题标签:

×1
×1

已提出的问题: 2016-03-17 17:32:28

问题浏览量: 660 次

最后更新: 2016-03-17 17:34:28

相关问题