शुरुआत में आप ऐसा नहीं कर सकते:
having rid!=MAX(rid)
HAVING क्लॉज में केवल वे चीजें शामिल हो सकती हैं जो समग्र समूहों की विशेषताएँ हैं।
इसके अलावा, 1, 2, 3
SQL सर्वर में GROUP BY में मान्य नहीं है - मुझे लगता है कि यह केवल ORDER BY में मान्य है।
क्या आप समझा सकते हैं कि यह वह नहीं है जिसकी आपको तलाश है:
select
LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound,
MAX(qvalues.rid)
from batchinfo join qvalues on batchinfo.rowid=qvalues.rowid
where LEN(datapath)>4
group by LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound