Как исключить повторяющиеся занчение у оператора 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
Не могу сделать что бы был в строке один раз в соответствующих столбцах
Что я делаю не правильно?
Всем заранее спасибо!))

21 Авг 2019 в 06:23
226 +1
0
Ответы
1

Для исключения повторяющихся значений 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] для каждого учащегося. Таким образом, каждый учащийся будет представлен только один раз в результирующем наборе данных.

Надеюсь, это поможет вам решить проблему с повторяющимися значениями в вашем запросе!

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир