代码之家  ›  专栏  ›  技术社区  ›  vinibrsl

如何通过接受空值的查询进行分区?

  •  0
  • vinibrsl  · 技术社区  · 8 年前

    我有一个需要使用的查询 PARTITION BY

    SELECT
        ROW_NUMBER()
        OVER (PARTITION BY
                id, country_id
            ORDER BY
                id, country_id) AS row_number
        FROM
            cities
        ...
    

    问题是 country_id ,中使用的第二个聚合字段 分区依据 ,可以是 NULL 我需要 ROW_NUMBER() 总而言之。

    row_number() 只有在有相同记录的情况下才进行汇总 id 国家/地区id 身份证件 国家/地区id 还是一样 国家/地区id

    有办法吗?

    3 回复  |  直到 8 年前
        1
  •  2
  •   Ankur Patel    8 年前

    您可以使用coalesce,如下所示:

    SELECT
        ROW_NUMBER()
        OVER (PARTITION BY
                id, Coalesce(country_id,0)) AS row_number
        FROM
            cities
        ...
    
        2
  •  1
  •   Gordon Linoff    8 年前

    如果其中一个值是 NULL . 另一方面,按相同的列排序是没有用的。在博士后中 order by

    row_number() over (partition by id, country_id)
    
        3
  •  1
  •   arce.est    8 年前

    尝试替换空值

    SELECT
    ROW_NUMBER()
    OVER (PARTITION BY
            id, ISNULL(country_id,-1)
        ORDER BY
            id, ISNULL(country_id,-1)) AS row_number
    FROM
        cities
    ...