Вопрос:

Удалите противоположность запроса SELECT с предложением GROUP BY и MS Access

sql ms-access

28 просмотра

1 ответ

165 Репутация автора

У меня длинный запрос SELECT в MS Access. Я хотел бы в основном УДАЛИТЬ все из таблицы, которая не выбрана запросом. Спасибо!

    SELECT [Benefit Refused Cancellation Report].BENEFIT_PERIOD, 
        [Benefit Refused Cancellation Report].BENEFIT_TYPE, 
        [Benefit Refused Cancellation Report].CARRIER_NAME, 
        [Benefit Refused Cancellation Report].PLAN_NAME, 
        [Benefit Refused Cancellation Report].PERSON_TYPE, 
        [Benefit Refused Cancellation Report].LAST_NAME, 
        [Benefit Refused Cancellation Report].FIRST_NAME, 
        [Benefit Refused Cancellation Report].MIDDLE_NAME, 
        [Benefit Refused Cancellation Report].SUFFIX, 
        [Benefit Refused Cancellation Report].GENDER, 
        [Benefit Refused Cancellation Report].DATE_OF_BIRTH, 
        [Benefit Refused Cancellation Report].DATE_OF_HIRE, 
        [Benefit Refused Cancellation Report].EFFECTIVE_DATE, 
        Max([Benefit Refused Cancellation Report].END_DATE) AS MaxOfEND_DATE, 
        [Benefit Refused Cancellation Report].SSN

FROM [Benefit Refused Cancellation Report]

GROUP BY [Benefit Refused Cancellation Report].BENEFIT_PERIOD, 
        [Benefit Refused Cancellation Report].BENEFIT_TYPE, 
        [Benefit Refused Cancellation Report].CARRIER_NAME, 
        [Benefit Refused Cancellation Report].PLAN_NAME, 
        [Benefit Refused Cancellation Report].PERSON_TYPE, 
        [Benefit Refused Cancellation Report].LAST_NAME, 
        [Benefit Refused Cancellation Report].FIRST_NAME, 
        [Benefit Refused Cancellation Report].MIDDLE_NAME, 
        [Benefit Refused Cancellation Report].SUFFIX, 
        [Benefit Refused Cancellation Report].GENDER, 
        [Benefit Refused Cancellation Report].DATE_OF_BIRTH, 
        [Benefit Refused Cancellation Report].DATE_OF_HIRE, 
        [Benefit Refused Cancellation Report].EFFECTIVE_DATE, 
        [Benefit Refused Cancellation Report].SSN;
Автор: Chuck0185 Источник Размещён: 08.11.2017 11:23

Ответы (1)


0 плюса

865446 Репутация автора

Вы можете сделать это с помощью коррелированного подзапроса:

delete from [Benefit Refused Cancellation Report]
    where END_DATE < (select max(brdr2.End_Date)
                      from [Benefit Refused Cancellation Report] as brcr2
                      where brcr2.SSN = [Benefit Refused Cancellation Report].SSN
                     );

Это предполагает, что SSNуникально определяет каждую строку, которую вы хотите одну строку. Чтобы действительно соответствовать GROUP BY, вам нужно включить больше полей - или даже все из них.

Одно предостережение: это не учитывает NULLзначения, поэтому ключи, используемые для сопоставления, должны быть не NULL.

Автор: Gordon Linoff Размещён: 08.11.2017 11:40
Вопросы из категории :
32x32