高手帮忙写一条SQL语句(已附表结构)

hooyes 2014-04-14 01:40:57

DECLARE @hooyes TABLE
(
area_name VARCHAR(50) ,
area_code VARCHAR(20)
)

INSERT INTO @hooyes
( area_code, area_name )
VALUES ( '1001', 'CA' )
INSERT INTO @hooyes
( area_code, area_name )
VALUES ( '1002', 'CA' )
INSERT INTO @hooyes
( area_code, area_name )
VALUES ( '1003', 'CA' )
INSERT INTO @hooyes
( area_code, area_name )
VALUES ( '2001', 'US' )
INSERT INTO @hooyes
( area_code, area_name )
VALUES ( '4001', 'AU' )
INSERT INTO @hooyes
( area_code, area_name )
VALUES ( '4002', 'AU' )


SELECT area_name ,
area_code
FROM @hooyes
/*
直接查询的结果:


area_name area_code
CA 1001
CA 1002
CA 1003
US 2001
AU 4001
AU 4002
*/

/*

想要一条 SQl 查出如下结果,按area_name分组,并且合并 area_code,以逗号隔开。

area_name area_code
CA 1001,1002,1003
US 2001
AU 4001,4002

*/

...全文
125 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzw_0736 2014-04-14
  • 打赏
  • 举报
回复

select DISTINCT a.area_name,b.area_code
from @hooyes a 
CROSS APPLY (SELECT STUFF((SELECT',' + area_code FROM @hooyes WHERE area_name = a.area_name FOR XML PATH('')),1, 1, '') area_code) b
  • 打赏
  • 举报
回复
[code=sql]
DECLARE @hooyes TABLE
    (
      area_name VARCHAR(50) ,
      area_code VARCHAR(20)
    )
     
INSERT  INTO @hooyes
        ( area_code, area_name )
VALUES  ( '1001', 'CA' )
INSERT  INTO @hooyes
        ( area_code, area_name )
VALUES  ( '1002', 'CA' )
INSERT  INTO @hooyes
        ( area_code, area_name )
VALUES  ( '1003', 'CA' )
INSERT  INTO @hooyes
        ( area_code, area_name )
VALUES  ( '2001', 'US' )
INSERT  INTO @hooyes
        ( area_code, area_name )
VALUES  ( '4001', 'AU' )
INSERT  INTO @hooyes
        ( area_code, area_name )
VALUES  ( '4002', 'AU' )
 
 
select area_name,
	STUFF((SELECT',' + area_code FROM @hooyes WHERE area_name = a.area_name FOR XML PATH('')),1, 1, '')
from @hooyes a
group by area_name

/*
AU	4001,4002
CA	1001,1002,1003
US	2001
*/

[/code]
yoan2014 2014-04-14
  • 打赏
  • 举报
回复
SELECT  area_name ,
        STUFF((SELECT ',' + b.area_code FROM @hooyes AS b WHERE b.area_name = a.area_name FOR XML PATH('') ) ,1,1,'')
FROM    @hooyes AS a 
GROUP BY area_name

--
area_name                                          
-------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AU                                                 4001,4002
CA                                                 1001,1002,1003
US                                                 2001

(3 row(s) affected)

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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