Не содержится в функции eaggregate / Дата GROUP BY AND max не показывает самую последнюю дату - PullRequest
0 голосов
/ 01 июня 2019

Я застрял здесь, и ваша помощь будет оценена.Основываясь на коде, который вы видите ниже: у меня есть подзапрос с некоторыми условиями.в частности, следующее:

AND OwnedByTeamJ='C - O Review'
AND  OwnedByTeamJ is null

Я хочу получить результаты из подзапроса. Сделайте еще один выбор для них, потому что все, что я хочу, это самая последняя дата в таблице.Как вы можете видеть на картинке, я хочу иметь возможность извлечь строку # 3, которая имеет самую высокую дату, и свою собственную командой, которая является нулевой (я думаю!, Поскольку там нет никакого значения).Теперь проблемы: 1-сначала код работал, и я видел все записи!однако он не выбрал самую последнюю дату

2 - внезапно он перестал работать и увидел эту ошибку: столбец tt.IncidentID недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни впредложение GROUP BY.

select 
    distinct max(LastModifiedDateTimeJ),
    incidentID,
    EffecRequestStatus,
    OwnedByTeamJ
From (
    select   
      EffecRequestStatus,
      IncidentID,
      LastModifiedDateTimeJ,
      OwnedByTeamJ,
      DetailsJ,
      Status,
      OwnedByTeam 
    from IncidentView
       where 
       CAST(CreatedDateTime as  DATE) >='05-01-2019'
       AND JournalTypeName like '%Journal - Note%'
       AND OwnedByTeamJ='C - O Review'
       AND  OwnedByTeamJ is null

    group by  
        EffecRequestStatus,
        IncidentID,
        LastModifiedDateTimeJ,
        OwnedByTeamJ,
        DetailsJ,
        Status,
        OwnedByTeam
) as tt
where 
    tt. RequestStatus not in ('Submission','P-C submission','C Review')

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

1) Эти условия не должны сосуществовать:

AND OwnedByTeamJ='C - O Review'
AND  OwnedByTeamJ is null

... потому что эти две вещи никогда не выполняются одновременно, и вы получите пустой набор результатов.Я думаю, что вы хотите, чтобы AND (OwnedByTeamJ='C - O Review' or OwnedByTeamJ is null)

2) Ошибка, которую вы упоминаете, похоже, не соответствует запросу, который вы нам показали.Вы пытались сделать еще один group by извне?

3) Нет смысла использовать distinct вместе с какой-либо функцией агрегирования, такой как max, sum, count и т. Д.

4) Пока вы включили EffecRequestStatus в group by, вы получите 3 строки, а не 1, потому что все 3 строки имеют различное значение для EffecRequestStatus.Вам придется удалить его из group by и, следовательно, из select, если вы хотите видеть только одну строку.

0 голосов
/ 01 июня 2019

Попробуйте, если хотите получить не пустой результат:

AND (OwnedByTeamJ='C - O Review'
OR  OwnedByTeamJ is null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...