문제

다음과 같이 보이는 쿼리가 있습니다.

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

TimemonDay의 유효한 값은 NULL, -1, 0, 1-24입니다. 현재 Max ()는 해당 값의 선호도를 순서 NULL, -1, 0, 1-24에 배치하지만 실제로 원하는 것은 -1, NULL, 0, 1-24이므로 NULL이 더 높은 것으로 간주됩니다. -1보다. Max가 이것을 할 수 없다는 것을 알고 있습니다. 그래서 그것을 달성하는 가장 쉬운 방법은 무엇입니까?

도움이 되었습니까?

해결책

주말까지 주말, Max (Coalesce (Timemonday,-. 5))를 선택하십시오.

그런 다음 -.5를 NULL로 변환하십시오

다른 팁

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

최대를 계산할 때 NULL을 -0.5로 교체 한 다음 NULL로 되돌립니다.

(MS SQL Server 구문)

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

편집 : 이것을 테스트하지 않았습니다

SELECT weekEnd, REPLACE(MAX(COALESCE(timeMonday, '-0.1')), '-0.1', 'null')
FROM timesheet
GROUP BY weekEnd
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top