求sql添加数据的存储过程!

yanjing713 2010-11-10 11:17:39
现在我有3个表
销售表(店铺名称,日期,销售数量,销售金额)
电话号码表(编号,号码)
信息发送表(发送号码,发送时间,发送内容)
现在我需要写的存储过程是

用店铺名称分组统计出当天销售数量和销售金额,以及本月累计的销售金额和数量。

然后添加到信息发送表

一个号码和一个店铺的销售为一条信息。求高手指教!!!!!!!!!!!!
销售表
北京--2010-11-9--5--300
北京--2010-11-3--2--1200
上海--2010-11-9--5--300
上海--2010-11-2--5--300
号码表
1------13615421563
2------13215426859
3------15215255555

我需要实现的功能是
信息发送表
13615421563--2010-11-9-北京2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
13215426859--2010-11-9-北京2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
15215255555--2010-11-9-北京2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
13615421563--2010-11-9-上海2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
13215426859--2010-11-9-上海2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
15215255555--2010-11-9-上海2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。

答案:

--> 测试数据:#sale
if object_id('tempdb.dbo.#sale') is not null drop table #sale
create table #sale(store varchar(8), date datetime, sales int, money int)
insert into #sale
select '北京', '2010-11-9', 5, 300 union all
select '北京', '2010-11-3', 2, 1200 union all
select '上海', '2010-11-9', 5, 300 union all
select '上海', '2010-11-2', 5, 300
--> 测试数据:#phone
if object_id('tempdb.dbo.#phone') is not null drop table #phone
create table #phone(id int, phone bigint)
insert into #phone
select 1, 13615421563 union all
select 2, 13215426859 union all
select 3, 15215255555

select phone, convert(varchar(10),getdate(),120),
store+ymd+'日销售数量:'+ltrim(a)+'件,销售金额'+ltrim(b)+'元,本月累计销售,'+ltrim(c)+'件,'+ltrim(d)+'元。'
from #phone a,
(
select store,
ltrim(year(getdate()))+'年'+ltrim(month(getdate()))+'月'+ltrim(day(getdate())) ymd,
sum(case datediff(dd,date,getdate()) when 0 then sales else 0 end)a,
sum(case datediff(dd,date,getdate()) when 0 then money else 0 end)b,
sum(case datediff(mm,date,getdate()) when 0 then sales else 0 end)c,
sum(case datediff(mm,date,getdate()) when 0 then money else 0 end)d
from #sale group by store
) b

/*
phone
-------------------- ---------- --------------------------------------------------------------------------
13615421563 2010-11-09 北京2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
13215426859 2010-11-09 北京2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
15215255555 2010-11-09 北京2010年11月9日销售数量:5件,销售金额300元,本月累计销售,7件,1500元。
13615421563 2010-11-09 上海2010年11月9日销售数量:5件,销售金额300元,本月累计销售,10件,600元。
13215426859 2010-11-09 上海2010年11月9日销售数量:5件,销售金额300元,本月累计销售,10件,600元。
15215255555 2010-11-09 上海2010年11月9日销售数量:5件,销售金额300元,本月累计销售,10件,600元。
*/



但是我就是不知道怎么把我查询出来的结果 添加到信息发送表,谢谢!!!!!!!
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForFumm 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yanjing713 的回复:]
引用 1 楼 forfumm 的回复:
insert into [信息发送表] select col1...[coln] from ....

我试了 不行的 如果我信息发送表中有5个字段,现在我查询出来只有3个 ,如何添加 ,求教··········
我需要测试成功的代码 ,谢谢!!!!········
[/Quote]
insert into [信息发送表]( col1,col2,col3) select col1,col2,col3 from ...
在插入表中列出相应的列名就可以了
coleling 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yanjing713 的回复:]
我试了 不行的 如果我信息发送表中有5个字段,现在我查询出来只有3个 ,如何添加 ,求教··········
我需要测试成功的代码 ,谢谢!!!!········
[/Quote]
哪5个?多出来的两个从哪里取值,你不说出来谁知道啊?
yanjing713 2010-11-10
  • 打赏
  • 举报
回复
?????????专家,高手··············
llh6795 2010-11-10
  • 打赏
  • 举报
回复
学习了!
yanjing713 2010-11-10
  • 打赏
  • 举报
回复
求教专家 高手············
yanjing713 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 forfumm 的回复:]
insert into [信息发送表] select col1...[coln] from ....
[/Quote]
我试了 不行的 如果我信息发送表中有5个字段,现在我查询出来只有3个 ,如何添加 ,求教··········
我需要测试成功的代码 ,谢谢!!!!········
coleling 2010-11-10
  • 打赏
  • 举报
回复

--信息发送表
create table infosend(phone bigint,date datetime,info varchar(200))

create proc spname
as
begin
insert infosend
select phone, convert(varchar(10),getdate(),120),
store+ymd+'日销售数量:'+ltrim(a)+'件,销售金额'+ltrim(b)+'元,本月累计销售,'+ltrim(c)+'件,'+ltrim(d)+'元。'
from #phone a,
(
select store,
ltrim(year(getdate()))+'年'+ltrim(month(getdate()))+'月'+ltrim(day(getdate())) ymd,
sum(case datediff(dd,date,getdate()) when 0 then sales else 0 end)a,
sum(case datediff(dd,date,getdate()) when 0 then money else 0 end)b,
sum(case datediff(mm,date,getdate()) when 0 then sales else 0 end)c,
sum(case datediff(mm,date,getdate()) when 0 then money else 0 end)d
from #sale group by store
) b
end
ForFumm 2010-11-10
  • 打赏
  • 举报
回复
insert into [信息发送表] select col1...[coln] from ....

22,210

社区成员

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

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