这样的结算用 SQL 怎么做??

Jipi 2004-12-03 11:11:42
表 a
id name
1 中1
2 华1
3 人1

表b
id_list field2 field3
1,2 xxx bbbb
2 ccc ddd
2,3 dfdf dfdf
如何用SQL查到结果为以下的数据??

id_list field2 field3
中1,华1 xxx bbbb
华1 ccc ddd
华1,人1 dfdf dfdf
...全文
145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaomeixiang 2004-12-11
  • 打赏
  • 举报
回复
declare @a table(id varchar(50),name nvarchar(50))
insert into @a
select '1','中1' union
select '2','華1' union
select '3','人1'

declare @b table(id_list varchar(50),field2 varchar(50),field3 varchar(30))
insert into @b
select '1,2','xxx','bbbb' union
select '2','ccc','ddd' union
select '2,3','dfdf','dfdf'

select * into #t from @b b,@a a where charindex(a.id,b.id_list)>0
declare @name nvarchar(500),@id_list varchar(50)
select @id_list='',@name=''
update #t set @name=case when @id_list=id_list then @name+','+name else name end,name=@name,@id_list=id_list
select max(name) name,max(field2) field2,max(field3) field3 from #t group by id_list
drop table #t
zanyzyg 2004-12-11
  • 打赏
  • 举报
回复

让你用函数来处理id_list字段,不是让你用函数来执行sql语句。

Jipi 2004-12-03
  • 打赏
  • 举报
回复
ljial()
我太懒了,方法比较多,但都很复杂
如分开写B表的数据多数重复,且如果B表内容多的话浪费就大了

zanyzyg(猪油果)
在函数内不能使用动态的SQL语句 ,遇到Exec函数就出错
sitoto 2004-12-03
  • 打赏
  • 举报
回复
不会搞,顶!
zanyzyg 2004-12-03
  • 打赏
  • 举报
回复

用函数

ljial 2004-12-03
  • 打赏
  • 举报
回复
表b的设计是否存在问题呢?为什么不分开来写

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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