Для окончательного having min(rid)
необходимо сравнение
Сказав это, не существует ассоциированной GROUP BY, которую вы можете увидеть, если переставите свой фрагмент кода
select * from qvalues
where rowid ,name,compound in (
select rowid,name,compound from qvalues
where rowid in (select rowid from batchinfo where instrument='tf1')
group by rowid,name,compound
having COUNT(*)>1
)
--missing group by
having min(rid) -- > foo
Редактировать: переформулированный
select
*
from
(
select
rowid,name,compound, min(q.rid) as minrid
from
qvalues q
where
EXISTS (SELECT * FROM batchinfo b where b.instrument='tf1' AND b.rowid = q.rowid)
group by
rowid,name,compound
having
COUNT(*)>1
) foo
JOIN
qvalues q2 On foo.rowid = q.rowid AND foo.name = q.name AND foo.compound = q.compound
AND foo.minrid = q2.rid
Ваша первоначальная ошибка, вероятно, связана с отсутствием псевдонима производной таблицы в сочетании с тем, что SQL Server не поддерживает многостолбцовую IN.Я использую EXISTS, а не JOIN, потому что вы можете получить больше строк из qvalues JOIN batchinfo, чем ожидаете (основываясь на ответе Джо)