sql中怎样把同一张表中相同字段的内容合并为一条记录?

我的表现在是这样的:客户id购买产品id112311241125112621682169想让表转变成:客户id购买产品id1123,124,125,1262168,169... 我的表现在是这样的:
客户id 购买产品id
1 123
1 124
1 125
1 126
2 168
2 169
想让表转变成:
客户id 购买产品id
1 123,124,125,126
2 168,169

也就是说把一个客户购买的产品合并显示在一条记录中。

谢谢!!
我现在在用access2007。谢谢!
大家说的应该是用sql server的解决方法吧。
我现在在用access2007, 似乎是有些不同,恳请大家指点,菜鸟在这里谢谢大家!
展开
 我来答
feixianxxx
推荐于2016-11-16 · TA获得超过2202个赞
知道大有可为答主
回答量:1273
采纳率:100%
帮助的人:1740万
展开全部
--sql 2000可以用函数哦
create FUNCTION udf_pin(@客户id INT )
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @s VARCHAR(100)
SELECT @s=isnull(@s+',','')+rtrim(购买产品ID) FROM tb WHERE 客户id=@客户id
RETURN @s
END;
GO
SELECT 客户id,dbo.udf_pin(客户id) AS 购买产品ID
FROM tb
GROUP BY 客户id

--sql2005一句话搞定
select 客户ID,
购买产品ID=stuff((select ','+rtrim( 购买产品id) from tb where t.客户id=客户id order by 购买产品id for xml path('')),1,1,'')
from tb t
group by 客户id
ysllyzl
2010-08-24
知道答主
回答量:13
采纳率:0%
帮助的人:10.7万
展开全部
产品ID的数目是不是恒定的?
可以用游标实现

declare @客户id nvarchar(1000);
select @客户id=isnull(@客户id+N',[','[') + ltrim(rtrim(convert(char,客户id)))+']'
from (select distinct 客户id from TestTable) A
--print @客户id
declare @sql nvarchar(1000)
set @sql=N'select pvt.* from TestTable
pivot
(
min([ 购买产品id ])
for 客户id in ('+@客户id +N')
) as pvt'
--print @sql
exec(@sql)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我今天上课了
2010-08-24 · TA获得超过1410个赞
知道小有建树答主
回答量:844
采纳率:0%
帮助的人:668万
展开全部
一定要sql吗 存储过程可以吗

--过程test
create or replace procedure test as
cursor cur_id is select distinct id from tab;
cursor cur_pid(v_id tab.id%type) is select pid from tab where id=v_id;
begin
dbms_output.put_line('客户'||' 产品');
for v_cur_id in cur_id loop
dbms_output.put(v_cur_id.id||' ');
for v_cur_pid in cur_pid(v_cur_id.id) loop
dbms_output.put(' '||v_cur_pid.pid);
end loop;
dbms_output.put_line('');
end loop;
end;

--调用
call test();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec9d734c8
2010-08-24 · TA获得超过208个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:114万
展开全部
什么数据库?什么版本?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式