Frage

Ich habe eine Abfrage, die ein bisschen wie folgt aussieht:

SELECT weekEnd, MAX(timeMonday)
FROM timesheet
GROUP BY weekEnd

Die gültigen Werte für timeMonday sind: null, -1, 0, 1-24. Im Moment MAX () legt die Präferenz dieser Werte in der Größenordnung null, -1, 0, 1-24, aber was ich will eigentlich ist -1, null, 0, 1-24, so dass null höher angesehen wird als -1. Ich weiß, MAX kann nicht das tun, so was ist der einfachste Weg, es zu erreichen?

War es hilfreich?

Lösung

  

SELECT WEEKEND, MAX (verschmelzen (timeMonday, -. 5))   VON Zeiterfassungs   GROUP BY WOCHENENDE

Dann wandeln -.5 zurück zu null

Andere Tipps

SELECT weekEnd, CASE WHEN maxTimeMonday = -0.5 THEN NULL ELSE maxTimeMonday END maxTimeMonday 
FROM (
   SELECT weekEnd, MAX(CASE WHEN timeMonday IS NULL THEN -0.5 ELSE timeMonday END) maxTimeMonday 
     FROM timesheet
    GROUP BY weekEnd) T

ersetzt NULL um -0,5 wenn MAX Berechnung dann Zurücksetzen es NULL zu.

(MS SQL Server-Syntax)

SELECT weekEnd, MAX(COALESCE(timeMonday, '-0.1'))
FROM timesheet
GROUP BY weekEnd

Edit: habe nicht getestet

SELECT weekEnd, REPLACE(MAX(COALESCE(timeMonday, '-0.1')), '-0.1', 'null')
FROM timesheet
GROUP BY weekEnd
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top