选择不包含NULL的不同多个字段

时间:2011-08-11 07:24:48

标签: sql tsql distinct-values notnull

我有一个包含Value ID和Value

的表
--------------
| id | value |
--------------
|  1 |  NULL |
--------------
|  1 |     A |
--------------
|  2 |  NULL |
--------------
|  2 |  NULL |
--------------
|  3 |     B |
--------------
|  3 |     B |
--------------
|  3 |     B |
--------------

我需要从表中选择不同的id和相应的值。选择Id时应该是唯一的,如果它在值字段中有多个值,则它应该只检索不是NULL值

所以结果应该如下所示。

--------------
| id | value |    
--------------
|  1 |     A |
--------------
|  2 |  NULL |
--------------    
|  3 |     B |
--------------

如何实现这一目标?使用SQL Server 2005

2 个答案:

答案 0 :(得分:5)

您可以使用常规GROUP BY

GROUP BY

  • NULL中消除1值,因为存在其他值。
  • 保留NULL的{​​{1}}值,因为它只有2个值。

SQL语句

NULL

测试脚本

SELECT  id
        , MIN(value)
FROM    YourTable
GROUP BY
        id

答案 1 :(得分:1)

这有点令人费解,但应该可以解决这个问题:

select distinct x.id, x.value
  from table x
 where x.value is not null 
    or not exists 
       (select y.id 
          from table y 
         where y.id = x.id 
           and y.value is not null)