Ich habe diese:Wählen Sie die Zeile mit der ID, anderen Wert in anderen Spalte SQL Zugriff
ID A B C D ID2
1 | 1 | 1 | 1 | 1 | 1
1 | 1 | 1 | 1 | 1 | 1
1 | 1 | 1 | 1 | 1 | 2
1 | 1 | 1 | 1 | 1 | 3
2 | 1 | 1 | 1 | 1 | 1
2 | 1 | 1 | 1 | 1 | 2
2 | 1 | 1 | 1 | 1 | 3
3 | 1 | 1 | 1 | 1 | 1
3 | 1 | 1 | 1 | 1 | 1
3 | 1 | 1 | 1 | 1 | 1
3 | 1 | 1 | 1 | 1 | 2
3 | 1 | 1 | 1 | 1 | 2
3 | 1 | 1 | 1 | 1 | 2
Was es tun muss, ist mir immer die erste Aufzeichnung der ID zu zeigen. Ändert sich der Wert ID2, muss auch dieser angezeigt werden. So sollte es so aussehen:
ID A B C D ID2
1 | 1 | 1 | 1 | 1 | 1
1 | 1 | 1 | 1 | 1 | 2
1 | 1 | 1 | 1 | 1 | 3
2 | 1 | 1 | 1 | 1 | 1
2 | 1 | 1 | 1 | 1 | 2
2 | 1 | 1 | 1 | 1 | 3
3 | 1 | 1 | 1 | 1 | 1
3 | 1 | 1 | 1 | 1 | 2
Ich habe es so versucht, aber das funktioniert nicht gut. Es gibt mir nicht die erste Aufzeichnung einer Wert-ID, und ich bekomme immer noch doppelte Werte, während ID2 sich nicht ändert.
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;
Das ist mein ganzer Code. Alle Teile sind notwendig, ist dies der Teil ist es im Begriff ist:
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))
'eindeutige ID wählen, von tablename' ID2. – jarlh
Ihre Abfrage erwähnt 3 Spalten, während Beispieldaten nur 2 Spalten haben. Zeige echte Tabellenstruktur. – Serg
Reale Tabellenstruktur hat 6 Spalten, aber die Überprüfung erfolgt über Spalte BSN und Spalte ao_percentage, die anderen Spalten dienen nur zur Information. – user7219039