I have a table with Value ID and Value
--------------
| id | value |
--------------
| 1 | NULL |
--------------
| 1 | A |
--------------
| 2 | NULL |
--------------
| 2 | NULL |
--------------
| 3 | B |
--------------
| 3 | B |
--------------
| 3 | B |
--------------
I need to select distinct id and corresponding value from the table. When selecting the Id should be unique and if it is having multiple values in the value field it should retrieve only not NULL values
So the result should be like below.
--------------
| id | value |
--------------
| 1 | A |
--------------
| 2 | NULL |
--------------
| 3 | B |
--------------
How to achieve this? using SQL server 2005
You can use a regular GROUP BY
.
The GROUP BY
will
NULL
value from 1
because other values are present.NULL
value for 2
because it only has NULL
values.SELECT id
, MIN(value)
FROM YourTable
GROUP BY
id
;WITH q (id, value) AS (
SELECT 1, NULL
UNION ALL SELECT 1, 'A'
UNION ALL SELECT 2, NULL
UNION ALL SELECT 2, NULL
UNION ALL SELECT 3, 'B'
UNION ALL SELECT 3, 'B'
UNION ALL SELECT 3, 'B'
)
SELECT id
, MIN(value)
FROM q
GROUP BY
id