SQL语句问题,求解答。会的帮忙解决,不会的麻烦帮顶,谢谢....................

仅此而已 2011-09-18 01:30:15
数据库如图:

现有数据如图:

我想要的结果如图:


也就是说,将codeGC这一列名称相同的进行分组查询,然后把他们的addressGC这列的数据进行合并。


我的SQL太差,麻烦各位大侠帮忙解决下,谢谢了。
...全文
157 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
仅此而已 2011-09-18
  • 打赏
  • 举报
回复


如图,我还是结这个帖子发现只能给2个人给分,然后在注意到下面的滚动条....
给分的不是对其的···············有的把浏览器下面滚动条拖的好长·····,


SQL板块的2个朋友没给上分.........


CSDN这个没做好
仅此而已 2011-09-18
  • 打赏
  • 举报
回复
问题解决了,结贴 。 谢谢参与
chuanzhang5687 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mou__ 的回复:]
引用 9 楼 qianjin036a 的回复:
你那个 006 是什么回事,和上面另一个不一样么?



我是故意那样写的,我要是想只按照codeGC 这个分组,其他要是相同的只显示一个呢?(除了addressGC 这列,这列要合并为一列)
[/Quote]要是只按codeGC分组的话,group by后面就跟一个codeGC就好了
除了那个合并的列不要改动外
其他的列如果没有要求 你不妨取个最大值 或最小值
仅此而已 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qianjin036a 的回复:]
你那个 006 是什么回事,和上面另一个不一样么?
[/Quote]


我是故意那样写的,我要是想只按照codeGC 这个分组,其他要是相同的只显示一个呢?(除了addressGC 这列,这列要合并为一列)
-晴天 2011-09-18
  • 打赏
  • 举报
回复
2000 里要用函数,在论坛里可以找到合并列值的函数.
-晴天 2011-09-18
  • 打赏
  • 举报
回复
create table tb(codeGC varchar(20),nameGC varchar(20),addressGC varchar(20),explainGC varchar(20))
insert into tb select '001','name001','address001','explain001'
insert into tb select '002','name002','address002','explain002'
insert into tb select '003','name003','address003','explain003'
insert into tb select '004','name004','address004','explain004'
insert into tb select '001','name001','address005','explain001'
insert into tb select '002','name002','address006','explain002' --如果这行nameGC是 002
insert into tb select '003','name003','address007','explain003'
go
select codeGC,nameGC,stuff((select ','+addressGC from tb where codeGC=a.codeGC for xml path('')),1,1,'')addressGC,explainGC
from tb a group by codeGC,nameGC,explainGC
/*
codeGC nameGC addressGC explainGC
-------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------
001 name001 address001,address005 explain001
002 name002 address002,address006 explain002
003 name003 address003,address007 explain003
004 name004 address004 explain004

(4 行受影响)

*/

go
drop table tb
-晴天 2011-09-18
  • 打赏
  • 举报
回复
你那个 006 是什么回事,和上面另一个不一样么?
仅此而已 2011-09-18
  • 打赏
  • 举报
回复
我是看SQL板块人少,所以在SQL和ASP.Net 都发了帖子


谢谢楼上几位 ,
chuanzhang5687 2011-09-18
  • 打赏
  • 举报
回复
create table tb
(
codeGC varchar(50),
nameGC varchar(50),
addressGC varchar(50),
explainGC varchar(50)
)
insert into tb values('XXX001' ,'name001', 'address001' ,'explain001')
insert into tb values('XXX002' ,'name002', 'address002' ,'explain002')
insert into tb values('XXX003' ,'name003', 'address003' ,'explain003')
insert into tb values('XXX004' ,'name004', 'address004' ,'explain004')
insert into tb values('XXX001' ,'name001', 'address005' ,'explain001')
insert into tb values('XXX002' ,'name002', 'address006' ,'explain002')
insert into tb values('XXX003' ,'name003', 'address007' ,'explain003')


select codeGC, nameGC,explainGC, addressGC=stuff((select ' '+addressGC from tb t where codeGC=tb.codeGC and
nameGC =tb.nameGC and explainGC =tb.explainGC for xml path('')), 1, 1, '')
from tb
group by codeGC, nameGC,explainGC

/*
codeGC,nameGC,explainGC,addressGC
XXX001,name001,explain001,address001 address005
XXX002,name002,explain002,address002 address006
XXX003,name003,explain003,address003 address007
XXX004,name004,explain004,address004

(4 行受影响)
把这个移到MSSQL版块吧
hao1hao2hao3 2011-09-18
  • 打赏
  • 举报
回复

IF OBJECT_ID('TEST') > 0
DROP TABLE TEST
create table test
(
CODEGC VARCHAR(10),
NAMEGC VARCHAR(10),
ADDRESSGC VARCHAR(10),
EXPLAINGC VARCHAR(10)
)
GO
insert into test
select 'xxx01','name001','address001','explain001'
union all
select 'xxx01','name001','address005','explain001'
union all
select 'xxx02','name002','address002','explain002'

SELECT DISTINCT C.CODEGC,D.NAMEGC,C.ADDRESSGC,D.EXPLAINGC
FROM (SELECT A.CODEGC,STUFF((SELECT ' ' + B.ADDRESSGC FROM TEST AS B WHERE A.CODEGC = B.CODEGC FOR XML PATH('')),1,1,'' ) AS ADDRESSGC FROM TEST AS A GROUP BY A.CODEGC) AS C INNER JOIN TEST AS D
ON C.CODEGC = D.CODEGC

结果
xxx01 name001 address001 address005 explain001
xxx02 name002 address002 explain002
hao1hao2hao3 2011-09-18
  • 打赏
  • 举报
回复

SELECT DISTINCT C.CODEGC,D.NAMEGC,C.ADDRESSGC,D.EXPLAINGC
FROM (SELECT A.CODEGC,STUFF((SELECT ' ' + B.ADDRESSGC FROM TEST AS B WHERE A.CODEGC = B.CODEGC FOR XML PATH('')),1,1,'' ) AS ADDRESSGC FROM TEST AS A GROUP BY A.CODEGC) AS C INNER JOIN TEST AS D
ON C.CODEGC = D.CODEGC

hao1hao2hao3 2011-09-18
  • 打赏
  • 举报
回复

SELECT DISTINCT C.CODEGC,D.NAMEGC,C.ADDRESSGC,D.EXPLAINGC
FROM (SELECT A.CODEGC,STUFF((SELECT ' ' + B.ADDRESSGC FROM TEST AS B WHERE A.CODEGC = B.CODEGC FOR XML PATH('')),1,1,'' ) AS ADDRESSGC FROM TEST AS A GROUP BY A.CODEGC) AS C INNER JOIN TEST AS D
ON C.CODEGC = D.CODEGC

仅此而已 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chuanzhang5687 的回复:]
合并列值!
[/Quote]
麻烦能不能给写哈,我也大概知道怎么回事,但是语句写不出来
chuanzhang5687 2011-09-18
  • 打赏
  • 举报
回复
合并列值!
仅此而已 2011-09-18
  • 打赏
  • 举报
回复
麻烦各位大侠 不要给我说理论
我理论知道是怎么回事,但就是不知道怎么写

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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