怎么写SQL能实现且效率会高?

swwlzg 2003-12-26 04:40:18
如下这张表:有的人有4笔数据,有的只有1笔。下面要实现这样一个查询:
不管原来有几条记录,最后都把它转化成一条,按照lwmlwk的顺序。
表结构如下:
lwmwno lwmlwk lwmlwd lwmlwm
0307578 1 200312 a001
0307578 2 200312 a002
0307578 3 200312 a003
0307578 4 200312 a004
0207001 1 200312 b001
0207001 3 200312 b002
0207389 2 200312 c001
0207389 3 200312 c002
0207389 4 200312 c003
0207003 2 200312 d001
查询后的结果如下:
0307578 200312 a001 a002 a003 a004
0207001 200312 b001 b002
0207389 200312 c001 c002 c003
0207003 200312 d001
就是不管lwmlwk为几,要先满足前面的栏位不为空。
请各位大侠帮帮忙想想应该怎么写。
...全文
28 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomhuang 2003-12-27
  • 打赏
  • 举报
回复
如果数据量很大,速度会很慢哦.搂主要注意.
jiangchuandong 2003-12-26
  • 打赏
  • 举报
回复
学习!
zjcxc 2003-12-26
  • 打赏
  • 举报
回复
--创建一个合并函数
create function f_merg(@lwwwno varchar(10))
returns varchar(8000)
as
begin
declare @re varchar(8000)
set @re=''
select @re=@re+' '+lwmlwm from 表 where lwmwno=@lwwwno
set @re=substring(@re,2,8000)
return(@re)
end
go

--调用这个函数实现你的要求
select lwmwno,lwmlwd=min(lwmlwd),lwmlwm=dbo.f_merg(lwwwno)
from 表 group by lwwwno
tomhuang 2003-12-26
  • 打赏
  • 举报
回复
学习...

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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