一条查询语句(使用function)

本文介绍了一种使用SQL函数来汇总特定项目下所有相关品牌的方案。通过创建自定义函数实现品牌字符串的拼接,并展示了如何结合两张表的数据完成这一任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表project
pid 项目编号
pname 项目名称

现在表project里有如下数据
123   AAA
456   BBB

表detail
detailid   编号
pid        对应的项目名称
pp   品牌

表detail里有如下数据
1    123   DEll
2    123   IBM
3    456   TCl

向得到的结果集是这样的
项目名称    对应的品牌
AAA    DEll,IBM
BBB    TCL
也就是通过一条语句得到2个字段
一个是项目名称(这个简单)
还有一个就是这个项目下对应的品牌的字符串相加 就好像(DEll,IBM)
望高手指点

=================================

--测试环境
Create table project(pid int,pname varchar(10))
insert into project select 123,'AAA'
union all select 456,'BBB'

Create table detail(detailid int identity(1,1),pid int,pp varchar(10))
insert into detail select 123,'DEll'
union all select 123,'IBM'
union all select 456,'TCl'

--建函数
CREATE function F_GETSTR(@pid int)
returns varchar(200)
as
begin
declare @return varchar(200)
set @return=''
select @return=@return+','+pp+'' from  detail
 where pid=@pid
set @return=stuff(@return,1,1,'')
return @return
end

--查询
select 项目名称=(select pname from project where pid=A.pid),
       对应的品牌=dbo.F_GETSTR(pid)
from detail A
group by pid
--结果
项目名称   对应的品牌
-------   ---------
AAA        DEll,IBM
BBB        TCl

(所影响的行数为 2 行)

--删除测试环境
Drop table project,detail
Drop function F_GETSTR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值