各位达人,大家好,小弟遇到一个难题(SQL 2005),如下,请达人指导:
表如下:zuhao danweibianhao danweimingcheng
1 A A公司
1 B B公司
2 C C公司
2 D D公司
2 E E公司
3 F F公司
3 G G公司先要实现的结果:
zhuhao danweibianhao danweimingcheng
1 A,B A公司,B公司
2 C,D,E C公司,D公司 E公司
3 F,G F公司,G公司
请达人指导,谢谢!!
表如下:zuhao danweibianhao danweimingcheng
1 A A公司
1 B B公司
2 C C公司
2 D D公司
2 E E公司
3 F F公司
3 G G公司先要实现的结果:
zhuhao danweibianhao danweimingcheng
1 A,B A公司,B公司
2 C,D,E C公司,D公司 E公司
3 F,G F公司,G公司
请达人指导,谢谢!!
解决方案 »
- sql的列转一行,用逗号分割
- 企业管理器如何配置后才能每次打开的时候都提示输入sa密码??????????
- 存储过程中定义包体(package body)时提示这个错误
- 将sql数据备份导入的sqlsever后,数据库连接不上?
- 请问如何用存储过程返回一张表???已知传入两个参数,如何用存储过程返回一张查询表?(sql server2000)
- 怎样用表名作为自定义函数的参数(要求函数中向变量表插入自来参数表数据)
- 月小计统计问题
- 如何初始化数据库(mssql2005)?
- select
- VFP菜鸟问题1:怎样用命令键激活同表单视频控件(急,立即给分)
- 如何使用EXEC里面创建的临时表
- 关于数据库设计方面的问题?
--> 测试数据:[test]
if object_id('[test]') is not null
drop table [test]
create table [test](
[zuhao] int,
[danweibianhao] varchar(1),
[danweimingcheng] varchar(5)
)
go
insert [test]
select 1,'A','A公司' union all
select 1,'B','B公司' union all
select 2,'C','C公司' union all
select 2,'D','D公司' union all
select 2,'E','E公司' union all
select 3,'F','F公司' union all
select 3,'G','G公司'
goSELECT distinct a.[zuhao],
[danweibianhao]=STUFF((SELECT ','+[danweibianhao]
FROM [test] b
WHERE a.zuhao=b.zuhao FOR XML PATH('')),1,1,''),
[danweimingcheng]=STUFF((SELECT ','+[danweimingcheng]
FROM [test] b
WHERE a.zuhao=b.zuhao FOR XML PATH('')),1,1,'')
FROM [test] a
GROUP BY a.zuhao,[danweibianhao]
/*
zuhao danweibianhao danweimingcheng
-----------------------------------------------
1 A,B A公司,B公司
2 C,D,E C公司,D公司,E公司
3 F,G F公司,G公司
*/
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
GO
CREATE TABLE [tb]([zuhao] INT,[danweibianhao] VARCHAR(1),[danweimingcheng] VARCHAR(5))
INSERT [tb]
SELECT 1,'A','A公司' UNION ALL
SELECT 1,'B','B公司' UNION ALL
SELECT 2,'C','C公司' UNION ALL
SELECT 2,'D','D公司' UNION ALL
SELECT 2,'E','E公司' UNION ALL
SELECT 3,'F','F公司' UNION ALL
SELECT 3,'G','G公司'
--------------开始查询--------------------------SELECT [zuhao],
danweibianhao=STUFF((SELECT ','+danweibianhao FROM [tb] WHERE [zuhao]=t.[zuhao] FOR XML PATH('')),1,1,''),
danweimingcheng=STUFF((SELECT ','+danweimingcheng FROM [tb] WHERE [zuhao]=t.[zuhao] FOR XML PATH('')),1,1,'')
FROM [tb] AS t
GROUP BY [zuhao]
----------------结果----------------------------
/*
zuhao danweibianhao danweimingcheng
----------- ---------------------------------------
1 A,B A公司,B公司
2 C,D,E C公司,D公司,E公司
3 F,G F公司,G公司(3 行受影响)
*/