如何从SQL Server生成excel文件(.xlsx)



我有这样的查询:

WITH InfoNeg AS
(
SELECT DISTINCT
n.idcliente,
CASE 
WHEN DATEDIFF(MONTH, MAX(n.fechanegociacion), GETDATE()) <= 2 
THEN 'Negociado 6 meses' 
ELSE NULL 
END AS TipoNeg
FROM 
SAB2NewExports.dbo.negociaciones AS n
WHERE 
Aprobacion = 'Si' 
AND cerrado = 'Si'
GROUP BY 
n.idcliente
), Multi AS
(
SELECT DISTINCT 
idcliente, COUNT(distinct idportafolio) AS NumPorts
FROM 
orangerefi.wfm.wf_master_HIST
WHERE 
YEAR(Fecha_BKP) = 2021 
AND MONTH(Fecha_BKP) = 08
GROUP BY 
idcliente
)
SELECT DISTINCT
m.IdCliente, c.Nombre1
FROM 
orangerefi.wfm.wf_master_HIST as m
LEFT JOIN 
InfoNeg ON m.idcliente = InfoNeg.idcliente
LEFT JOIN 
Multi ON m.IdCliente = Multi.idcliente
LEFT JOIN 
SAB2NewExports.dbo.Clientes AS c ON m.IdCliente = c.IdCliente
WHERE 
CanalTrabajo = 'Callcenter - Outbound' -- Cambiar aca
AND YEAR (Fecha_BKP) = 2021 
AND MONTH(Fecha_BKP) = 08 
AND GrupoTrabajo IN ('Alto')    -- Cambiar aca
AND Bucket IN (1, 2)            -- Cambiar aca
AND Multi.NumPorts > 1 
AND Infoneg.TipoNeg IS NULL

当我运行它时,我得到了3万行,我在执行查询时得到的列是:ClientID, name。当我运行它时,我想把它保存在一个Excel文件中,我不知道这是否可能。

另一个问题,是否可以创建一个存储文本的变量?我用的是CONCAT(),但文字太长有点麻烦,我不知道是否有其他选择。

如果你能帮助我,我会很感激的。

声明一个变量

DECLARE @string VARCHAR(MAX)
SET @string = concat()

然后插入要连接的内容

下面是carusyte给出的答案导出SQL查询数据到Excel我不知道这是不是你想要的,但是你可以像这样将结果导出到Excel中:

在结果窗格中,单击左上角单元格以突出显示所有记录,然后右键单击左上角单元格并单击"Save results as"。导出选项之一是CSV。

你也可以试试这个:

INSERT INTO OPENROWSET 
('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:Test.xls;','SELECT productid, price FROM dbo.product')
Lastly, you can look into using SSIS (replaced DTS) for data exports. Here is a link to a tutorial:

http://www.accelebrate.com/sql_training/ssis_2008_tutorial.htm

==更新#1 ==

要将结果保存为具有列标题的CSV文件,可以遵循以下步骤:

进入工具->选项查询结果->SQL Server->结果到Grid选中"在复制或保存结果时包括列标题"单击OK。请注意,新的设置不会影响任何现有的Query选项卡-您需要打开新的选项卡和/或重新启动SSMS。

相关内容

  • 没有找到相关文章

最新更新