2017-02-06 10 views
-1

В моем коде я это:SQL Изменение доступа значение запроса

AND (m.1 <> (SELECT TOP 1 m9.1 FROM mutatie m9 WHERE m.2 = m9.2 AND m.3 = m9.3)) 

я только не похоже, чтобы получить это право. Иногда я получаю несколько записей с одинаковым значением 1. Что нужно сделать, это показать мне первую запись и записи при изменении m.1. Что я сделал не так?

Это мой общий код:

SELECT 
IIf(IsNull(m.bsn),'',CStr(m.bsn)) AS BSN, 
IIf(IsNull(m.uitkering),'',CStr(m.uitkering)) AS Uitkering, 
IIf(IsNull(m.ingangsdatum),'',Format(m.ingangsdatum,'dd-mm-yyyy')) AS IngangsdatumUitkering, 
IIf(IsNull(m.eerste_ziektedag),'',Format(m.eerste_ziektedag,'dd-mm-yyyy')) AS EersteZiektedag, 
IIf(IsNull(m.ingangsdatum_w),'',Format(m.ingangsdatum_w,'dd-mm-yyyy')) AS DatumWijziging, 
IIf(IsNull(m.ao_percentage),'',CStr(m.ao_percentage)) AS PercentageUitkering 

FROM (((mutatie_historie AS m LEFT JOIN recht_soorten AS rs ON rs.recht_soort_id = m.recht_soort_id) 
          LEFT JOIN uitkering_soorten AS us ON us.uitkering_soort_id = m.uitkering_soort_id) 
          LEFT JOIN ao_klassen AS aok ON aok.ao_klasse_id = m.ao_klasse_id) 
          LEFT JOIN kenmerk_percentage_uitkering AS kpu ON kpu.kenmerk_code = m.kenmerk_code 

WHERE m.ongemax_dagloon > '0' 

AND (m.ao_percentage <> (SELECT TOP 1 m9.ao_percentage FROM mutatie_historie m9 WHERE m.bsn < m9.bsn AND m.ingangsdatum_w < m9.ingangsdatum_w)) 

AND not exists 
(SELECT null FROM mutatie_historie m2 WHERE m2.aanlevering > m.aanlevering AND m2.ingangsdatum_w <= m.ingangsdatum_w AND m2.bsn = m.bsn AND 
    (SELECT Iif(IsNull(m3.uitkering), '', m3.uitkering) FROM mutatie_historie m3 WHERE m3.bsn = m2.bsn AND m3.aanlevering = m2.aanlevering AND m3.keynummer = 
     (SELECT min(keynummer) FROM mutatie_historie m4 WHERE m4.bsn = m3.bsn AND m4.aanlevering = m3.aanlevering AND m4.uitkering is not null)) = 
      (SELECT Iif(IsNull(m3.uitkering), '', m3.uitkering) FROM mutatie_historie m3 WHERE m3.bsn = m.bsn AND m3.aanlevering = m.aanlevering AND m3.keynummer = 
       (SELECT min(keynummer) FROM mutatie_historie m4 WHERE m4.bsn = m3.bsn AND m4.aanlevering = m3.aanlevering AND m4.uitkering is not null))) 

ORDER BY m.bsn, m.ingangsdatum_w, m.ao_percentage DESC; 

Он ищет фактические записи для BSN. С этой фактической записью мне нужно увидеть только первый ao_percentage и когда он изменится в следующих записях с этим BSN.

+0

Извините, моя ошибка! Я использую базу данных Access. – user7219039

+0

Вместо 'TOP 1 m9.1' вы можете попробовать' MIN (m9.1) '. –

+0

В чем разница между TOP и MIN в этой ситуации? – user7219039

ответ

1

Top n просто возвращает одну или несколько «верхних» записей. Для большинства практических применений, вы должны подать заявку на получение значимых результатов:

AND (m.1 <> (SELECT TOP 1 m9.1 FROM mutatie m9 WHERE m.2 = m9.2 AND m.3 = m9.3 ORDER BY m91 DESC)) 

Обратите внимание, что с даже с Top 1 несколько записей могут быть возвращены, если m9.1 не является уникальным. Если это так, используйте Min(m9.1).

 Смежные вопросы

  • Нет связанных вопросов^_^