sql - 查询 SQL Server 的列顺序错误 - 没有人能回答这个问题
问题描述
我正在使用 SQL Server 2014。我必须为我们的客户端生成一个数据提取作为文本文件,并且它必须在提取的底部有一个尾行
因此,在 A 行的表格底部,它需要有“TRL”,在 B 行的表格底部,它需要包含包含数据的行数减去标题行
当我在 SQL 中运行查询时,它会按我想要的顺序返回。但是当我建立与 Excel 的数据连接时,它以不同的顺序出现
下面是一个简单的模型,说明我需要如何为客户显示提取物
下面是我正在使用的 SQL 服务器中的查询
SELECT
CAST(DateOfCall AS sql_variant) AS 'DateOfCall',
CAST(AgentName AS sql_variant) AS 'AgentName',
Connects, Completes, DMC, COMPANY_BPID,
ContactNumber, TalkTime, Disposition, Campaign, CA,
mpan_mpr, Installer, PKCallResults
FROM
dbo.CompanyX_CallResults C
INNER JOIN
dbo.CompanyX_ContactInfo X ON C.CallAccount = X.PKCustomerRecord
WHERE
DateOfCall BETWEEN '2020-10-15 00:00:01' AND '2020-10-15 23:59:59'
AND PoolFK = 504
UNION ALL
SELECT
'TRL ' AS Detail,
COUNT(AgentName) - 1 AS ROWID,
'' AS Detail3, '' AS Detail4,
'' AS Detail5, '' AS Detail6,
'' AS Detail7, '' AS Detail8,
'' AS Detail9, '' AS Detail10,
'' AS Detail11, '' AS Detail12,
'' AS Detail13, '' AS Detail14
FROM
dbo.CompanyX_CallResults
查询工作正常,但是当我建立与 Excel 的连接时,列的顺序出现错误!
DateOfCall
AgentName
应该是A列和B列然后是D列和E列
我想不通,我的其他同事也想不通
请任何帮助将不胜感激
解决方案
在公用表表达式中CTE
,您可以分配一个“Order_Hierarchy”列,其中“呼叫详细信息的日期”的值被分配为 1,摘要行被分配为 2。然后从CTE
并包含子句中选择:ORDER BY
Order_Hierarchy。另外,根据@AlwaysLearning,UNION ALL 后半部分的列名不是必需的,但我把它们留在了里面。像这样的东西
with union_cte as (
SELECT
1 as Order_Hierarchy,
CAST(DateOfCall AS sql_variant) AS DateOfCall,
CAST(AgentName AS sql_variant) AS AgentName,
Connects, Completes, DMC, COMPANY_BPID,
ContactNumber, TalkTime, Disposition, Campaign, CA,
mpan_mpr, Installer, PKCallResults
FROM
dbo.CompanyX_CallResults C
INNER JOIN
dbo.CompanyX_ContactInfo X ON C.CallAccount = X.PKCustomerRecord
WHERE
DateOfCall BETWEEN '2020-10-15 00:00:01' AND '2020-10-15 23:59:59'
AND PoolFK = 504
UNION ALL
SELECT
2 as Order_Hierarchy,
'TRL ' AS Detail,
COUNT(AgentName) - 1 AS ROWID,
'' AS Detail3, '' AS Detail4,
'' AS Detail5, '' AS Detail6,
'' AS Detail7, '' AS Detail8,
'' AS Detail9, '' AS Detail10,
'' AS Detail11, '' AS Detail12,
'' AS Detail13, '' AS Detail14
FROM
dbo.CompanyX_CallResults)
select DateOfCall, AgentName, Connects, Completes, DMC, COMPANY_BPID,
ContactNumber, TalkTime, Disposition, Campaign, CA,
mpan_mpr, Installer, PKCallResults
from union_cte
order by Order_Hierarchy;