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
有其他办法吗?比如不使用游标,通过循环的办法显示出数据表里的值?
------最佳解决方案--------------------
;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和后面的查询组合到一个函数里面,返回字符串即可……
------其他解决方案--------------------你这个是字符串合并,不用游标的。字符串合并,自己从网上找吧,很多的
------其他解决方案--------------------谢谢,的确不用游标。
------其他解决方案--------------------我还没见到非要用游标才能实现的功能,可能我见识少吧
------其他解决方案--------------------游标 真不知道什么时候必须用 我老是自己写循环 ,游标的好处 求大神解释...
------其他解决方案--------------------我就知道在数据库管理方面用游标是可以的,比如遍历所有用户表再做一些处理等。其他的真没试过
------其他解决方案--------------------我老用游标,其实字符串拼接的时候,能不用就不用,因为很慢的。谢谢!