Ошибка группировки или агрегирования, даже если поле включено в список группировки

У меня есть запрос группировки нескольких значений SQL, в котором я хочу найти максимум поля slt.OUTCOST. Запуск приводит к следующей ошибке:

Столбец «#eldekiSeri.CODE» недействителен в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY».

Я получаю эту ошибку, хотя это поле включено в предложение GROUP BY.

Если я удалю агрегат MAX и включу slt.OUTCOST в список групп, ошибка исчезнет, ​​но тогда я больше не смогу найти максимум для поля.

Это мой SQL:

set @sqlAbuk = '
SELECT
eldekiSeri.CODE AS [SERİ NO], 
eldekiSeri.KODU AS [STOK KODU],
eldekiSeri.ACIKLAMA AS [STOK ADI],
clc.CODE AS [CARİ KOD], 
clc.DEFINITION_ AS [CARİ ADI],
MAX(slt.OUTCOST) AS [ALIŞ FİYATI],
stf.DATE_ AS [ALIŞ TARİHİ],
eldekiSeri.AMBARNO AS [ŞUBE KODU]
FROM '+@firmDb+'.dbo.LG_'+@firmNumber+'_'+@firmPeriod+'_SERILOTN sl
INNER JOIN '+@firmDb+'.dbo.LG_'+@firmNumber+'_'+@firmPeriod+'_SLTRANS slt ON sl.LOGICALREF = slt.SLREF
INNER JOIN #eldekiSeri eldekiSeri ON sl.CODE = eldekiSeri.CODE
INNER JOIN '+@firmDb+'.dbo.LG_'+@firmNumber+'_'+@firmPeriod+'_STFICHE stf ON slt.STFICHEREF = stf.LOGICALREF
INNER JOIN '+@firmDb+'.dbo.LG_'+@firmNumber+'_CLCARD clc ON stf.CLIENTREF = clc.LOGICALREF
WHERE (slt.INVENNO = 0) AND (slt.FICHETYPE = 1)';
--print @sqlAbuk;
--exec (@sqlAbuk);
set @sqlAbuk = @sqlAbuk +' AND eldekiSeri.CODE not in ( select distinct bc.[SERİ NO] from #birlestirilmisClone bc ) ';
set @sqlAbuk = @sqlAbuk +' GROUP BY eldekiSeri.CODE, eldekiSeri.KODU, eldekiSeri.ACIKLAMA, clc.CODE, clc.DEFINITION_, stf.DATE_, eldekiSeri.AMBARNO';
set @sqlAbuk = @sqlAbuk +' ORDER BY eldekiSeri.CODE, eldekiSeri.KODU, eldekiSeri.ACIKLAMA, clc.CODE, clc.DEFINITION_, slt.OUTCOST, stf.DATE_, eldekiSeri.AMBARNO';
print @sqlAbuk;
--Exec(@sqlAbuk);
insert into #birlestirilmis Exec(@sqlAbuk);
--print (@sqlAbuk);

person Add080bbA    schedule 24.01.2016    source источник


Ответы (1)


Это потому, что у вас есть slt.OUTCOST в предложении ORDER BY. Удалите это, и это избавит вас от ошибки.

person Ricky Keane    schedule 24.01.2016