ahmed_sa Ответов: 1

Как заменить max(featurevalue) на featurevalue it self ?


У меня есть запрос сделать сводную таблицу на основе максимальной функции значения

мне нужно заменить максимум(featurevalue) Характеристика Значение

это означает, что мне не нужно использовать агрегатную функцию на pivot .

мне нужно использовать функцию value it self

при использовании no aggregate как указано выше это дает мне ошибку

неправильный синтаксис около Для

как решить эту проблему, пожалуйста

Что я уже пробовал:

DECLARE @Columns as VARCHAR(MAX)
SELECT @Columns =
COALESCE(@Columns + ', ','') + QUOTENAME(FeatureName)
FROM
--select distinct Features 
(select  distinct FT.FeatureName  from #ItemFeatures Feat inner join [CustomerLocations].[ItemFeatures] ItemF
on ItemF.CustomerId=Feat.CustomerId INNER join CustomerLocations.FeatureTypes FT on ItemF.FeatureId=FT.FeatureId

   ) AS B
   ORDER BY B.FeatureName
--pivot table make count for item to every Feature Based on features Name
DECLARE @SQLs as VARCHAR(MAX)

SET @SQLs = 'SELECT ItemCode, IPN,PartnerName,CustomerName,FeatureValues ' + @Columns + '
FROM
(
  select F.ItemId,F.ItemId as ItemCode,I.IPN,I.PartnerName,I.PartnerPart,Itm.CustomerName,t.FeatureName,F.FeatureValue,F.FeatureValue as FeatureValues
               from #ItemFeatures Itm 
 inner join [CustomerLocations].[ItemFeatures] F on F.CustomerId=Itm.CustomerId  
 inner join [CustomerLocations].[Items] I on I.ItemID=F.ItemId
 inner join CustomerLocations.FeatureTypes T on T.FeatureId=F.FeatureId 
 
) as PivotData
PIVOT
(
   FeatureValue
   FOR FeatureName IN (' + @Columns + ')
) AS PivotResult
ORDER BY CustomerName'

EXEC(@SQLs)

1 Ответов

Рейтинг:
1

OriginalGriff

Причина, по которой это дает вам ошибку, заключается в том, что функция PIVOT всегда требует агрегатной функции: это обязательно, потому что PIVOT существует для агрегирования ваших результатов и поворота агрегированных строк в столбцы!

Вы не можете просто использовать столбец, потому что он ничего не агрегирует!

Я бы посоветовал вам сесть и точно определить, что вы пытаетесь сделать с входными и выходными образцами, прежде чем пытаться заставить функцию делать то, для чего она просто не предназначена...