You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中UNION ALL未返回全部预期结果的求助

问题分析与解决方案

首先,你的查询只显示change列和对应数据的原因很明确:UNION ALL 会沿用第一个 SELECT 语句的列名,后面两个查询里的servicerequest和servizio别名不会覆盖列名,而且你没有添加标识字段来区分每条记录属于哪种eventType。实际上,另外两类的数据可能已经被查询出来了,但都被放在了change列里,你没法区分它们。

解决步骤


1. 添加类型标识列

给每个子查询新增一个event_type字段,明确标记这条记录属于哪一类事件,这样就能在结果里区分不同类型的数据了。

2. 统一数值列的别名

把三个查询里的数值列统一命名为同一个通用别名(比如duration),避免因列名混淆导致误解。

修改后的SQL语句

select 
    data,
    cast((((ore*60.0)+minuti)/60) as decimal(10,2)) as duration,
    'Change' as event_type
from mainGrid 
where username = 'marco_polo' 
and YEAR(data) = 2020 
and MONTH(data) = 5 
and eventType = 'Change' 

union all 

select 
    data,
    cast((((ore*60.0)+minuti)/60) as decimal(10,2)) as duration,
    'Service request' as event_type
from mainGrid 
where username = 'marco_polo' 
and YEAR(data) = 2020 
and MONTH(data) = 5 
and eventType = 'Service request' 

union all 

select 
    data,
    cast((((ore*60.0)+minuti)/60) as decimal(10,2)) as duration,
    'Servizio' as event_type
from mainGrid 
where username = 'marco_polo' 
and YEAR(data) = 2020 
and MONTH(data) = 5 
and eventType = 'Servizio' 

order by data

额外验证建议

如果修改后仍然看不到另外两类数据,建议单独执行每个子查询(比如只运行查询Service request的部分),确认数据库中是否存在符合条件的记录。有可能是没有对应的数据,导致这部分结果为空。

内容的提问来源于stack exchange,提问作者Elias Mauro Antioco Murgia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:12:37