Как исключить повторяющиеся занчение у оператора PIVOT? Всем привет! есть таблица (как бы эл.журнал), хотел вывести данные через перекрестный запрос но поля повторяетсяSELECT ID_KEY2,[2017-10-27],[2017-10-28] FROM (SELECT ID, ID_KEY2, OCENKA, DAT FROM Journal2) p PIVOT (AVG(OCENKA) FOR DAT IN ( [2017-10-27],[2017-10-28] ) ) AS pvt ORDER BY pvt.ID_KEY2; ID_KEY2 - это идентификатор учащегося OCENKA - Оценка которую он получил DAT - формат даты, число получения оценки Вот я просто сделал запрос для себя, а тут ID_KEY2 повторяется. Например учащийся с ID_KEY2 = 1 получил оценку 5 в 27-10-2017 и 4 ку в 28-10-2017 В результате выполнения выше приведенного запроса учащийся с ID_KEY2 = 1 выходит на первой строке по дате 27-10-2017 и на второй по дате 28-10-2017 Не могу сделать что бы был в строке один раз в соответствующих столбцах Что я делаю не правильно? Всем заранее спасибо!))
Для исключения повторяющихся значений ID_KEY2 в результирующем наборе данных, вы можете использовать функцию агрегации в комбинации с оператором PIVOT. Например, вы можете использовать функцию MAX или MIN для агрегации значений в случае, если учащийся получил несколько оценок в один день. Вот пример, как можно изменить ваш запрос:
SELECT ID_KEY2, MAX([2017-10-27]) as [2017-10-27], MAX([2017-10-28]) as [2017-10-28] FROM (SELECT ID, ID_KEY2, OCENKA, DAT FROM Journal2) p PIVOT (AVG(OCENKA) FOR DAT IN ( [2017-10-27],[2017-10-28] ) ) AS pvt GROUP BY ID_KEY2 ORDER BY ID_KEY2;
В данном случае, используется функция MAX для агрегации значений OCENKA в столбцах [2017-10-27] и [2017-10-28] для каждого учащегося. Таким образом, каждый учащийся будет представлен только один раз в результирующем наборе данных.
Надеюсь, это поможет вам решить проблему с повторяющимися значениями в вашем запросе!
Для исключения повторяющихся значений ID_KEY2 в результирующем наборе данных, вы можете использовать функцию агрегации в комбинации с оператором PIVOT. Например, вы можете использовать функцию MAX или MIN для агрегации значений в случае, если учащийся получил несколько оценок в один день. Вот пример, как можно изменить ваш запрос:
SELECT ID_KEY2, MAX([2017-10-27]) as [2017-10-27], MAX([2017-10-28]) as [2017-10-28]FROM
(SELECT ID, ID_KEY2, OCENKA, DAT
FROM Journal2) p
PIVOT
(AVG(OCENKA) FOR DAT IN ( [2017-10-27],[2017-10-28] ) ) AS pvt
GROUP BY ID_KEY2
ORDER BY ID_KEY2;
В данном случае, используется функция MAX для агрегации значений OCENKA в столбцах [2017-10-27] и [2017-10-28] для каждого учащегося. Таким образом, каждый учащийся будет представлен только один раз в результирующем наборе данных.
Надеюсь, это поможет вам решить проблему с повторяющимися значениями в вашем запросе!