有F01和f02两张表
f01表有两列数据
Name   和    Indexe
设备1            1
设备2            2
设备3            3
f02表有3列数据
   DAte                  Indexe     Val
2006-9-6 01:33:34         1         234.52578
2006-9-6 01:33:34         2         352.86792
2006-9-6 01:33:34         3        .875628456
2006-9-6 02:34:35         1         252.67984
2006-9-6 02:34:35         2        287.86874
2006-9-6 02:34:35         3       .875623576
 ``````````````````````````
想 自动 生成 每天  一张Excel(设备1=流量1)格式如下    
时间        流量1     流量2   流量3
01          234       352.86   0.875
02          252       287.86   0.875
''''''
24          '''       ''''''   '''''
-- 存储过程
CREATE PROC dbo.p_qry
@dt datetime = NULL  -- 不指定的话, 则是查询今天的
AS
SET NOCOUNT ON
DECLARE @s nvarchar(4000), @dt1 datetime, @dt2 datetime
SELECT @s = '',
@dt = ISNULL(@dt, GETDATE()),
@dt1 = CONVERT(char(10), @dt, 120),
@dt2 = DATEADD(Day, 1, @dt1)
SELECT @s = @s + ',' 
+ QUOTENAME(name) 
+ '=CONVERT(decimal(18,2),SUM(CASE indexe WHEN ' 
+ RTRIM(indexe)
+ ' THEN val ELSE 0 END))'
FROM t
SET @s = 'SELECT 时间=RIGHT(100+DATEPART(HOUR, [date]), 2) ' + @s 
+ ' FROM f WHERE [date]>=@dt1 AND [date]<@dt2
GROUP BY RIGHT(100+DATEPART(HOUR, [date]), 2)'
EXEC sp_executesql @s, N'@dt1 datetime, @dt2 datetime', @dt1, @dt2
GO--调用
EXEC dbo.p_qry '2006-9-6'
go
只写这段在作业里面就可以啦吗?EXEC dbo.p_qry '2006-9-6'
go

解决方案 »

  1.   

    只写这段在作业里面就可以啦吗?EXEC dbo.p_qry '2006-9-6'
    go
    就是这个问题,西西
      

  2.   

    只要语句没有问题,在作业中用exec调用就行,你要是不放心,可以把时间该近一点,看看到底有没有执行.
      

  3.   

    那怎么办啊?
    还需要加上什么才能实现我上面说的意思?
    我现在就是想把数据传到一个新建表里面,然后建立31个dst包只有文件名不同再每天00:30分定时作业,还需要添加什么语句?谁能完成的帮我写出来啊
      

  4.   

    insert into EXEC dbo.p_qry '2006-9-6' select * from B where ...再加上这句就可以吗?