-1
幾個星期以來,我一直在尋找我有這個問題的答案。我需要通過電子郵件發送前一天在Excel表格中查詢結果。發送xlsx格式的文件作爲附件使用TSQL
的要求是:
- 提取自前一天數據庫中的一些數據 - OK
- 發送查詢結果爲Excel文件(XLSX格式)通過電子郵件 - NOK
問題:
- 即使更改@query_attachment_filename中的格式,輸出也僅爲CSV。當我使用xlsx時,生成的文件無法打開。
- 失蹤前2列前導零
我半工作的代碼現在:
use xxx
DECLARE @AWBPREFIX VARCHAR(255)
DECLARE @Query VARCHAR(MAX)
SET @AWBPREFIX = '[sep=,' + CHAR(13) + CHAR(10) + 'AWB.PREFIX]'
SET @Query = '
SET NOCOUNT ON
SELECT AWB.PREFIX AS ' + @AWBPREFIX + ',
AWB.SERIAL,
AWB.ORIGIN,
AWB.DEST,
AWB_MOVE.CARRIER,
AWB.PIECES,
AWB.WEIGHT,
AWB_MOVE.PIECES,
AWB_MOVE.WEIGHT,
AWB.NATURE_GOODS,
AWB_MOVE.CARRIER,
AWB_MOVE.FLIGHT_NUMBER,
AWB_MOVE.FLIGHT_DATE,
AWB_MOVE.ORIGIN,
AWB_MOVE.DEST,
AWB_MOVE.ULD_NUMBER,
AWB_MOVE.SHC_LIST
FROM
xxx..AWB
INNER JOIN
AWB_MOVE ON AWB.SEQ = AWB_MOVE.AWB_SEQ
GROUP BY
AWB.PREFIX,
AWB.SERIAL,
AWB.ORIGIN,
AWB.DEST,
AWB_MOVE.CARRIER,
AWB.PIECES,
AWB.WEIGHT,
AWB_MOVE.PIECES,
AWB_MOVE.WEIGHT,
AWB.NATURE_GOODS,
AWB_MOVE.CARRIER,
AWB_MOVE.FLIGHT_NUMBER,
AWB_MOVE.FLIGHT_DATE,
AWB_MOVE.ORIGIN,
AWB_MOVE.DEST,
AWB_MOVE.ULD_NUMBER,
AWB_MOVE.SHC_LIST,
AWB_MOVE.action_status
HAVING AWB_MOVE.FLIGHT_DATE = dateadd(dd,-1,cast(getdate() as date)) AND AWB_MOVE.DEST ="BRU" AND AWB_MOVE.action_status <>"NOT"'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Batch',
@recipients = 'xxx',
@execute_query_database = 'xxx',
@subject ='Import extracts',
@query [email protected],
@query_result_header = 1,
@query_result_separator=',',
@query_result_no_padding=1,
@query_result_width=32767,
@attach_query_result_as_file = 1,
@query_attachment_filename = 'import_batch.csv'
我不能使用SSIS由於辦公的限制。
有人可以幫我嗎?
感謝 邁克爾