t-sql数据库开发与结构化程序开发有什么区别?能不要游标改用多重循环实现下面的例子吗
t-sql数据库开发与结构化程序开发有什么区别?能不用游标改用多重循环实现下面的例子吗?
比如销售企业有几家购买企业,有数据表入下
id 销售企业 购买企业 购买量
1 a x 10
2 a y 20
3 b z 30
希望创建函数,返回字符串
“销售企业a,购买企业x购买量10;购买企业y购买量20;
销售企业b,购买企业z购买量30
”
我的方法是游标显示销售企业,比如a
游标while里,每个销售企业显示后,调用函数,显示购买企业及购买量,比如x,10;y,20
有其他办法吗?比如不使用游标,通过循环的办法显示出数据表里的值?
------解决方案--------------------
你这个是字符串合并,不用游标的。字符串合并,自己从网上找吧,很多的
------解决方案--------------------
不知道你是不是要这样的结果集,可把虚视图c2和后面的查询组合到一个函数里面,返回字符串即可……
比如销售企业有几家购买企业,有数据表入下
id 销售企业 购买企业 购买量
1 a x 10
2 a y 20
3 b z 30
希望创建函数,返回字符串
“销售企业a,购买企业x购买量10;购买企业y购买量20;
销售企业b,购买企业z购买量30
”
我的方法是游标显示销售企业,比如a
游标while里,每个销售企业显示后,调用函数,显示购买企业及购买量,比如x,10;y,20
有其他办法吗?比如不使用游标,通过循环的办法显示出数据表里的值?
------解决方案--------------------
你这个是字符串合并,不用游标的。字符串合并,自己从网上找吧,很多的
------解决方案--------------------
;with c1(id, 销售企业, 购买企业, 购买量) -- c1准备数据
as
(
select 1, 'a', 'x', 10 union all
select 2, 'a', 'y', 20 union all
select 3, 'b', 'z', 30
)
,c2 as
(
SELECT 1 groupId,
'销售企业' + 销售企业 + ',' f1,
'购买企业' + 购买企业 f2,
'购买量' + CAST(购买量 AS VARCHAR(10)) f3
from c1
)
SELECT DISTINCT
groupid,
STUFF((select ';'+(f1 + f2 + f3) from c2 where groupid = d.groupId FOR XML PATH('')),1,1,'') result
from c2 d
groupid result
----------- -----------------------------------------------
1 销售企业a,购买企业x购买量10;销售企业a,购买企业y购买量20;销售企业b,购买企业z购买量30
(1 行受影响)
不知道你是不是要这样的结果集,可把虚视图c2和后面的查询组合到一个函数里面,返回字符串即可……