当我有2条具有相同ID的行时,如何选择具有特定数据的行?

时间:2016-11-15 11:59:01

标签: sql sql-server

我再次需要你的帮助! 我试图在SQL中获得特定的结果 我有一个SQL查询,如:

Select ID, DOCUMENTATION, FIELDCODE FROM TABLE.

结果是:

ID  DOCUMENTATION   FIELDCODE
1   testDoc         0
1   NULL            202
2   NULL            202
3   NULL            202
4   testDoc2        0
4   NULL            202

但是,我希望:

ID  DOCUMENTATION   FIELDCODE
1   testDoc         0
2   NULL            202
3   NULL            202
4   testDoc2        0

总结一下:

  • 我希望字段代码为0
  • 如果字段代码0不存在,我想要字段代码202
  • 字段代码ID始终为202
  • 202字段代码的文档将始终设置为NULL
  • 带有文档的字段代码将始终为0
  • 我用案例构建文​​档:如果字段代码是202 - >设置NULL否则打印好的文档。

我的问题是文档。文档不一样。我不能用MIN ......

我还没找到解决方案。

谢谢,

1 个答案:

答案 0 :(得分:3)

一种方法使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by id order by fieldcode) as seqnum
      from t
     ) t
where seqnum = 1;

这是优先级查询的一个示例,您尝试在同一id的多行中进行选择。 row_number()通常是处理这些查询的最简单方法。