Reputation: 23
CREATE TABLE EMP
(
E_ID INT,
E_NAME VARCHAR(20),
GENDER VARCHAR(20),
CONTACT INT,
AGE INT
);
INSERT INTO EMP
VALUES (1001, 'ABC', 'MALE', NULL, NULL),
(1001, 'ABC', NULL, 8989, NULL),
(1001, 'ABC', NULL, NULL, 28);
I tried following query.. But not works..
SELECT
A.E_ID, B.E_NAME, B.GENDER, B.CONTACT, B.AGE
FROM
EMP AS A
INNER JOIN
ENT AS B ON A.E_ID = B.E_ID
AND A.E_NAME = B.E_NAME
AND A.GENDER = B.GENDER
AND A.CONTACT = A.CONTACT
WHERE
A.CONTACT IS NOT NULL;
How to get the single row output with not null values?
Upvotes: 2
Views: 56
Reputation: 1106
MAX()
will not include NULLs
. Try this:
SELECT
e_id,
e_name,
MAX(gender) as gender,
MAX(age) as age,
MAX(contact) as contact
FROM employee
GROUP BY e_id, e_name
Note: If there are more than 1 Non-null values, tweak the code accordingly. Else you might end up in considering wrong one.
Look at the sample output in db<>fiddle
Upvotes: 1
Reputation: 311018
Aggregate functions like max
ignore null
s, so one possible trick is to group by the e_id
and e_name
, and apply max
to the other columns:
SELECT e_id, e_name, MAX(gender), MAX(contact), MAX(age)
FROM employee
GROUP BY e_id, e_name
Upvotes: 2