【问题标题】:How to select only those rows where one column can have null or not null values for the same id如何仅选择一列对于同一 ID 可以具有空值或非空值的行
【发布时间】:2021-11-20 07:07:03
【问题描述】:

有人可以帮助我了解如何仅选择列的非空值的行,其中该列可以具有相同 id 的空值或非空值

我有一张这样的桌子

我需要这样的输出

【问题讨论】:

  • 相同的 id,这是否意味着相同的 col1 值?
  • 你的意思是如果有一条记录没有空值,它会被选中,但如果只有 ull 那么空值也可以?
  • 是否也应该考虑 col2 和 col3 空值?
  • @Whencesoever yes 如果 null 和 value 都存在,那么应该选择 value 一个,如果只有 null 一个,那么应该选择 null 一个
  • other 列(不是col1)的数据类型是什么?它们都一样吗?以消耗性格式(图像)发布您的数据将极大地帮助我们为您提供帮助。

标签: sql sql-server select


【解决方案1】:

你的描述不是很清楚。如果我确实正确理解了您的要求,那么每个col1 只需要 1 行。选择非空值最多的行?

select *
from
(
    select *, rn = row_number() over (partition by col1
                                      order by case when col2 is not null then 1 else 0 end
                                      +        case when col3 is not null then 1 else 0 end
                                      +        case when col4 is not null then 1 else 0 end 
                                      desc)
    from   a_table
) d
where rn = 1

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 2019-09-30
    • 1970-01-01
    • 2011-01-14
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多