小编DRU*_*UID的帖子

想执行sp_send_dbmail,以excel格式发送结果

我想执行 sp_send_dbmail 并将结果以 excel 格式通过电子邮件发送。我尝试过 .csv 和 .txt,但结果没有组织在整齐的列中。

这是我的代码

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DBMail_profile',
@recipients = 'myaddress@me.com',
@subject = 'Test',
@query = N'EXEC DatabaseTest.dbo.test',
@attach_query_result_as_file = 1,
@query_result_width = 150,
@query_result_header= 1,
@query_attachment_filename = 'test.txt',
@importance = 'High',
@query_result_no_padding = 1
Run Code Online (Sandbox Code Playgroud)

也试过这个

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DBMail_profile',
@recipients = 'myaddress@me.com',
@subject = 'Test',
@query = N'EXEC DatabaseTest.dbo.test',
@attach_query_result_as_file = 1,
@query_result_width = 150,
@query_result_header= 1,
@query_attachment_filename = 'test.csv',
@importance = 'High',
@query_result_no_padding = 1
Run Code Online (Sandbox Code Playgroud)

我希望我的结果采用整洁有序的格式。我的某些参数设置不正确吗?或者有没有办法将附件作为 .xls 或 .xlsx 文件?我可能解释不正确,我可以回答任何问题

这是我从 …

sql sql-server excel

4
推荐指数
1
解决办法
4835
查看次数

在 SQL 中添加总计超过 24 小时的时间

我试图从几行中添加时间,当它们加起来超过几个小时时,我没有得到我正在寻找的正确结果。想编写脚本TotalTime以允许超过 24 个 HH。不必是日期时间数据类型。

StartTimeFinishTime是 varchar(8) 数据类型。

这是代码和输出,其中TotalTime小于 24 小时且正确的结果

SELECT Codes = (DeptCode + '-' +  OpCode)
,TotalTime = convert(time(0),dateadd(second,sum(datediff(second,StartTime,FinishTime)),0)) 
,Units = SUM(Units)
,UPH = cast(isnull(sum(Units) / nullif(sum(datediff(minute,StartTime,FinishTime))*1.0,0),0.0)*60  as decimal(10,0))
,'Goal%' = (convert(varchar,cast((isnull(sum(Units) / nullif(sum(datediff(minute,StartTime,FinishTime))*1.0,0),0.0)*60)/5101*100 as decimal(10,0))) + '%') 
FROM PTW.dbo.TimeLog 
WHERE DeptCode = 'HP' AND OpCode = 'FC'
GROUP BY DeptCode, OpCode
Run Code Online (Sandbox Code Playgroud)

结果正确

Codes   TotalTime   Units   UPH   Goal%
HP-FC   12:37:00    47200   3741    73%
Run Code Online (Sandbox Code Playgroud)

这是实际的分解来证明

ID#     Codes   TotalTime   Units   UPH     Goal%   AssociateName …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

4
推荐指数
1
解决办法
1万
查看次数

SQL:如何从两个不同的列中减去TIME数据类型,并在HH:MM:SS中生成和AS

我有一个表(TimeLog)有2列(StartTime,TIME(0),NOT NULL)和(FinishTime,TIME(0),NOT NULL)我想写一个查询,它将减去(FinishTime - StartTime)AS ElapsedTime和以HH:MM:SS产生总和

我试过了

SELECT StartTime
      ,FinishTime
      ,REPLACE(CAST(CAST(DATEDIFF(Hour, StartTime, FinishTime )AS VARCHAR (2)) + ':' + CAST(DATEDIFF(MINUTE, StartTime, FinishTime )AS VARCHAR(2)) + ':'
+ Cast(DATEDIFF(Second, StartTime, FinishTime )AS VARCHAR (2)) AS VARCHAR(8)),'*','00') As ElapsedTime
FROM TimeLog
Run Code Online (Sandbox Code Playgroud)
StartTime   FinishTime  ElapsedTime
08:00:00    08:25:00    0:25:00
08:25:00    09:15:00    1:50:00
09:55:00    12:32:00    3:00:00
12:32:00    14:31:00    2:00:00
12:32:00    13:55:00    1:83:00
09:55:00    11:42:00    2:00:00
07:30:00    08:45:00    1:75:00
07:00:00    07:15:00    0:15:00
07:15:00    08:10:00    1:55:00
Run Code Online (Sandbox Code Playgroud)

但这只有在ElapsedTime低于一小时的情况下才有效.如果超过1小时,则结果格式不正确.有人可以帮忙吗?

sql sql-server

3
推荐指数
1
解决办法
162
查看次数

标签 统计

sql ×3

sql-server ×3

excel ×1

sql-server-2008 ×1