求一个统计

winsalau 2006-01-07 05:16:28
问题1:希望下面的问题2能在每天1时运行,请问如何做到?

问题2:现有用户表 TB_Union 字段:UnionID UnionName
1 黄小明
2 李小强
3 张小天

业绩表 TB_User 字段:UserID UserMoney UserType UserUnionID UserHandUp
1 7 移动 1 20060107
2 10 联通 1 20060107
3 7 移动 1 20060107
4 7 移动 2 20060107
5 7 移动 1 20060107
6 7 移动 1 20060106
说明:TB_User表的UserUnionID 对应TB_Union表的UnionID
我需要在每天1点,从上面的两个表的数据里,对表TB_TJM生成统计数据,在下面的表中生成数据

TB_TJM表 字段 TjmID TjmName TjmTime TjmMobile TjmUnicom TjmMoney
1 黄小明 20060107 3 1 31
2 李小强 20060107 1 0 7
3 张小天 20060107 0 0 0
即每天的数据移动相加,得出TjmMobile 联通相加得出TjmUnicom TjmMoney为金额




...全文
209 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng1071 2006-01-10
  • 打赏
  • 举报
回复
declare @a table( UnionID int, UnionName varchar(20))
insert into @a select 1,'黄小明'
insert into @a select 2,'李小强'
insert into @a select 3,'张小天'
declare @b table(UserID int,UserMoney int,UserType varchar(10) ,UserUnionID int,UserHandUp varchar(10))
insert into @b select 1,7,'移动',1,'20060109'
insert into @b select 2,10,'联通',1,'20060109'
insert into @b select 3,7,'移动',1,'20060109'
insert into @b select 4,7,'移动',2,'20060109'
insert into @b select 5,7,'移动',1,'20060109'
insert into @b select 6,7,'移动',1,'20060106'

declare @c table(TjmID int,TjmName varchar(20),UserHandUp varchar(20),TjmTime int,TjmMobile int,TjmUnicom int,TjmMoney int)
insert @c
select b.*,UserHandUp=isnull(UserHandUp,0),TjmTime=isnull(TjmTime,0),TjmMobile=isnull(TjmMobile,0),TjmUnicom=isnull(TjmUnicom,0),TjmMoney=isnull(TjmMoney,0) from @a b left join(
select UserUnionID,UserHandUp, [TjmTime]=sum(case when UserType='移动'then 1 else 0 end),[TjmMobile]=sum(case when UserType='移动'then UserMoney else 0 end),
[TjmUnicom]=sum(case when UserType='联通'then 1 else 0 end),[TjmMoney]=sum(case when UserType='联通'then UserMoney else 0 end)
from @b
where UserHandUp=convert(char(8),getdate(),112)
group by UserUnionID,UserHandUp)a on b.UnionID=a.UserUnionID

select* from @c
jiushaoye 2006-01-09
  • 打赏
  • 举报
回复
declare @TB_TJM table(TjmID int identity(1,1),TjmName varchar(30),TjmTime varchar(10), TjmMobile int, TjmUnicom int,TjmMoney money)
insert @tb_tjm
select a.unionname,isnull(d.userhandup,''),isnull(d.ydnum,0),isnull(d.ltnum,0),isnull(d.mon,0)
from t_union a left join (select userunionid,userhandup,
ydnum = sum(case when usertype = '移动' then 1 else 0 end),
ltnum = sum(case when usertype = '联通' then 1 else 0 end),
mon = sum(usermoney)
from tb_user group by userunionid,userhandup) d on a.unionid = d.userunionid
where d.userhandup = '20060107' or d.userhandup is null

select * from @tb_tjm
lsgis2001 2006-01-07
  • 打赏
  • 举报
回复
来晚了,那就学习一下吧。
mislrb 2006-01-07
  • 打赏
  • 举报
回复
楼主你改成insert语句就行了啊
insert yourtable select .....
winsalau 2006-01-07
  • 打赏
  • 举报
回复
这个好像只是select出来
我要的是对第三个表进行数据插入
每个人每天生成一条数据
点点星灯 2006-01-07
  • 打赏
  • 举报
回复
/*
UnionID UnionName UserHandUp TjmMobile TjmUnicom TjmMoney
----------- -------------------- -------------------- ----------- ----------- -----------
1 黄小明 20060107 4 1 38
2 李小强 20060107 1 0 7
3 张小天 0 0 0 0

*/
点点星灯 2006-01-07
  • 打赏
  • 举报
回复
问题2

declare @TB_Union table(UnionID int,UnionName varchar(20))

insert @TB_Union values(1,'黄小明')
insert @TB_Union values(2,'李小强')
insert @TB_Union values(3,'张小天')



declare @TB_User table(UserID int,UserMoney int,UserType varchar(20),UserUnionID int,UserHandUp varchar(20))

insert @TB_User values(1,7,'移动',1,'20060107')
insert @TB_User values(2,10,'联通',1,'20060107')
insert @TB_User values(3,7,'移动',1,'20060107')
insert @TB_User values(4,7,'移动',2,'20060107')
insert @TB_User values(5,7,'移动',1,'20060107')
insert @TB_User values(6,7,'移动',1,'20060106')

/*
select [TjmMobile]=isnull((case when UserType='移动' then count(UserMoney) end ),0)
,[TjmUnicom]=isnull((case when UserType='联通' then count(UserMoney) end),0),
[TjmMoney]=sum(UserMoney)
from @TB_User group by UserType,UserUnionID
*/


select a.UnionID,a.UnionName,[UserHandUp]=isnull(max(b.UserHandUp),0),
[TjmMobile]=isnull(sum(b.TjmMobile),0),
[TjmUnicom]=isnull(sum(b.TjmUnicom),0),
[TjmMoney]=isnull(sum(b.TjmMoney),0)
from @TB_Union a left join
(
select [TjmMobile]=isnull((case when UserType='移动' then count(UserMoney) end ),0)
,[TjmUnicom]=isnull((case when UserType='联通' then count(UserMoney) end),0),
[TjmMoney]=sum(UserMoney),
UserHandUp,UserUnionID
from @TB_User group by UserType,UserUnionID,UserHandUp
)b on a.UnionID=b.UserUnionID
group by a.UnionID,a.UnionName

---结果
/*

UnionID UnionName UserHandUp TjmMobile TjmUnicom TjmMoney
----------- -------------------- -------------------- ----------- ----------- -----------
1 黄小明 20060107 4 1 38
2 李小强 20060107 1 0 7
3 张小天
*/
点点星灯 2006-01-07
  • 打赏
  • 举报
回复
问题1:希望下面的问题2能在每天1时运行,请问如何做到?

答:建立作业,调度选择在每天1时运行

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
***********************************************

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


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

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

22,302

社区成员

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

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