求一条SQL

dengenming 2007-12-04 12:13:27
时间 代理号 收入金额
2007-09-08 001 2
2007-09-08 001 2
2007-09-08 001 2
2007-09-08 002 2
2007-09-08 003 2
2007-09-08 004 2
2007-09-08 001 2
2007-09-08 001 2

我想利用作业(job),把每个代理的每天的收入插入到另一个表中

时间 代理 收入总额

需要写一个循环插入? 希望能帮忙,谢谢
...全文
100 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dengenming 2007-12-04
如何判断当天的代理,和所代理的产品的结算已经存在,如果存在的话就只是更新不插入新的,谢谢啊,
  • 打赏
  • 举报
回复
-狙击手- 2007-12-04
insert into table2   
select convert(char(10),时间,120) as [时间],sum(isnull(收入金额,0)) as [收入金额]
from table1
where datediff(day,时间,getdate())=0
group by convert(char(10),时间,120)
  • 打赏
  • 举报
回复
dawugui 2007-12-04
--使用作业定时启停数据库的示例
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name='启用pubs数据库')
EXEC msdb.dbo.sp_delete_job @job_name='启用pubs数据库'

--定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'启用pubs数据库',
@job_id = @jobid OUTPUT

--定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=N'master', --数据库联机或者脱机只能在master数据库中进行
@sql=N'ALTER DATABASE pubs SET ONLINE' --使用pubs数据库联机(启用)
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'启用pubs数据库处理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql

--创建调度(使用后面专门定义的几种作业调度模板)
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'启用pubs数据库处理调度',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x1,
@freq_subday_interval=1,
@active_start_time = 075000 --每天07:50分执行

--添加目标服务器
DECLARE @servername sysname
SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jobid,
@server_name = @servername
  • 打赏
  • 举报
回复
晓风残月0110 2007-12-04
语句的写法楼上的大虾们已经很详细了,
如下是job


--作业与调度
--使用JOB
--企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名... --该存储过程用于创建表

--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排 --该处设置为每月日的凌晨:00:00


--然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

--设置方法:
--我的电脑--控制面板--管理工具--服务--右键SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.

  • 打赏
  • 举报
回复
dengenming 2007-12-04
thanks ,在吃饭,吃完饭试试
  • 打赏
  • 举报
回复
LiBin_OberthurCS 2007-12-04
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
insert into 表2(时间,代理,收入总额)
select 时间,代理号,sum(收入金额) from 表1 where datediff(dd,时间,getdate())=1 group by 时间,代理号

--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排为每天凌晨00:00:00执行,以insert前一天的汇总数据


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.

  • 打赏
  • 举报
回复
gahade 2007-12-04
如果只是插当天的

insert into 另一个表
select convert(char(10),时间,120) as '时间',sum(isnull(收入金额,0)) as '收入金额'
from 表
where datediff(day,时间,getdate())=0
group by convert(char(10),时间,120)
  • 打赏
  • 举报
回复
LiBin_OberthurCS 2007-12-04
insert into 表2(时间,代理,收入总额)
select 时间,代理号,sum(收入金额) from 表1 where datediff(dd,时间,getdate())=1 group by 时间,代理号
  • 打赏
  • 举报
回复
gahade 2007-12-04
insert into 另一个表
select convert(char(10),时间,120) as '时间',sum(isnull(收入金额,0)) as '收入金额'
from 表
group by convert(char(10),时间,120)
  • 打赏
  • 举报
回复
dengenming 2007-12-04
谢谢happyflystone和各位,结分~
  • 打赏
  • 举报
回复
-狙击手- 2007-12-04
if exists(select 1 from table2 where ....)
update ..
else
insert ..
  • 打赏
  • 举报
回复
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2007-12-04 12:13
社区公告
暂无公告