我写了以下SQL命令
select * from [Monitoring].[dbo].[MaintTaskMonitor]
where (JobStartDate,TaskType) in (
select max(JobStartDate),TaskType from [Monitoring].[dbo].[MaintTaskMonitor] where systemname='Dido'
group by TaskType)
出现以下错误:
在需要条件的上下文中指定的非布尔类型表达式,靠近“,”。
问题出在哪里?
您可以改为切换到相关子查询,然后检查外部范围中
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);