I stuck in here.
How to implement:
CASE
WHEN m.MAXDATE is not null THEN '*'
WHEN m.MAXDATE IS NULL THEN ' '
END
In query:
SELECT Ename, Hiredate, m.MAXDATE[MAXDATE]
FROM EMP
LEFT JOIN (Select max(Hiredate)[MAXDATE]
FROM EMP) m
on EMP.HIREDATE = m.MAXDATE
I've checked few website in order to find the answer, but it's giving me errors in every variant.
More details:
Query is:
SELECT Ename, Hiredate, m.MAXDATE[MAXDATE]
FROM EMP
LEFT JOIN (Select max(Hiredate)[MAXDATE]
FROM EMP) m
on EMP.HIREDATE = m.MAXDATE
This is a result:
SMITH 1980-12-17 00:00:00.000 NULL
ALLEN 1981-02-20 00:00:00.000 NULL
WARD 1981-02-22 00:00:00.000 NULL
JONES 1981-04-02 00:00:00.000 NULL
MARTIN 1981-09-28 00:00:00.000 NULL
BLAKE 1981-05-01 00:00:00.000 NULL
CLARK 1981-06-09 00:00:00.000 NULL
SCOTT 1982-12-09 00:00:00.000 NULL
KING 1981-11-17 00:00:00.000 NULL
TURNER 1981-09-08 00:00:00.000 NULL
ADAMS 1983-01-12 00:00:00.000 1983-01-12 00:00:00.000
JAMES 1981-12-03 00:00:00.000 NULL
FORD 1981-12-03 00:00:00.000 NULL
MILLER 1982-01-23 00:00:00.000 NULL
I want to just put '*'
instead of date in last column for ADAMS, and space ' '
where its NULL
.
Best Answer
Your syntax for the
CASE
expression is correct (it's an expression, not a statement!) You can simplify it slightly by removing the secondWHEN
:and the query:
And you don't really need the self-join. You could have the same result with a window aggregate function: