从子查询中选择多列时出错

问题描述 投票:0回答:1

我写了以下SQL命令

select * from [Monitoring].[dbo].[MaintTaskMonitor]  
where (JobStartDate,TaskType) in (
select max(JobStartDate),TaskType  from [Monitoring].[dbo].[MaintTaskMonitor]  where systemname='Dido'
group by TaskType) 

出现以下错误:

在需要条件的上下文中指定的非布尔类型表达式,靠近“,”。

问题出在哪里?

sql-server subquery sql-server-2016
1个回答
0
投票

您可以改为切换到相关子查询,然后检查外部范围中

JobStartDate
的值是否与
MAX
中内部范围的
HAVING
值匹配:

USE Monitoring; --Connect to the correct database instead, no need for 3 part naming
GO

SELECT <Explicit Column List> --Get out of the habit of using *
FROM [dbo].[MaintTaskMonitor] MTM
WHERE EXISTS (SELECT 1
              FROM [dbo].[MaintTaskMonitor] sq
              WHERE sq.systemname = 'Dido'
                AND sq.TaskType = MTM.TaskType
              HAVING MAX(sq.JobStartDate) = MTM.JobStartDate);
© www.soinside.com 2019 - 2024. All rights reserved.