我来了,这样实现: 1.在SQL的查询分析器中选对你的数据库名,然后执行以下代码:CREATE FUNCTION dbo.f_str(@id varchar(50))RETURNS varchar(8000)ASBEGIN DECLARE @r varchar(8000) SET @r = '' SELECT @r = @r + ',' + [vip卡号id] FROM hj100-------------------------------注意你原来的表名这里我用了HJ100为表名 WHERE [店名]=@id RETURN STUFF(@r, 1, 1, '')END 2:你要得到你的结果只要执行以下查询语句:SELECt [店名],[vip卡号id]=dbo.f_str([店名]),sum([金额]) as 金额FROM hj100GROUP BY [店名],dbo.f_str([vip卡号id])----------------没有加排序,你自行加了 /*结果 专卖二 c卡,d卡 220 专卖三 e卡,f卡 200 专卖一 a卡,b卡 205 */
存储过程更新其它表CREATE PROCEDURE l_update AS begin ------------将分组结果插入到名为MyTable的表中去 INSERT INTO MyTable (x_a, x_b, x_c) SELECt 店名, vip卡号id = dbo.f_str(店名), sum(金额) as 金额 FROM hj100 GROUP BY 店名, dbo.f_str(vip卡号id) end;
如果是这样的话直接把SQL语句按照存储过程的格式写进去就可以了
另外,存储过程可以接收参数的,包括输入和输出参数都可以
有表 销售记录
店名 vip卡号 金额
—————————————
专卖一 a卡 100
专卖一 b卡 105
专卖二 c卡 100
专卖二 d卡 120
专卖三 e卡 100
专卖三 f卡 100 可以用 select 店名,sum(金额) from 销售记录 group by 店名
计算出各装卖店营业额的汇总,得出
店名 金额
——————
专卖一 205
专卖二 220
专卖三 200
如果我要得出下面这样的结果
店名 卡号 金额
————————————
专卖一 a卡,b卡 205
专卖二 c卡,d卡 220
专卖三 e卡,f卡 200应该怎样做?
1.在SQL的查询分析器中选对你的数据库名,然后执行以下代码:CREATE FUNCTION dbo.f_str(@id varchar(50))RETURNS varchar(8000)ASBEGIN DECLARE @r varchar(8000) SET @r = '' SELECT @r = @r + ',' + [vip卡号id] FROM hj100-------------------------------注意你原来的表名这里我用了HJ100为表名 WHERE [店名]=@id RETURN STUFF(@r, 1, 1, '')END
2:你要得到你的结果只要执行以下查询语句:SELECt [店名],[vip卡号id]=dbo.f_str([店名]),sum([金额]) as 金额FROM hj100GROUP BY [店名],dbo.f_str([vip卡号id])----------------没有加排序,你自行加了
/*结果
专卖二 c卡,d卡 220
专卖三 e卡,f卡 200
专卖一 a卡,b卡 205
*/
begin
------------将分组结果插入到名为MyTable的表中去
INSERT INTO MyTable
(x_a, x_b, x_c)
SELECt 店名, vip卡号id = dbo.f_str(店名), sum(金额) as 金额
FROM hj100
GROUP BY 店名, dbo.f_str(vip卡号id)
end;
为了防止卡号重复,我在函数中加了distinct 但是报错
请问可以怎么做
我会给你40分以上