select根据同一个 select 查询中的另一个值合并一个值?

selecting a consolidated value based on another value in the same select query?

抱歉问题措辞不佳,但我正在使用以下查询合并客户记录:

select
 customer_key
,FIRST_VALUE(name          IGNORE NULLS) OVER(PARTITION BY customer_key ORDER BY last_updated_date desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS NAME
,FIRST_VALUE(county        IGNORE NULLS) OVER(PARTITION BY customer_key ORDER BY last_updated_date desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS COUNTRY
,FIRST_VALUE(country_code  IGNORE NULLS) OVER(PARTITION BY customer_key ORDER BY last_updated_date desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS COUNTRY_CODE
from            customers  cust

这 select 是使用 customer_key 的客户的最新记录。但对于国家,我需要国家代码与国家在同一行,使用国家字段作为驱动程序,但 country_code 列是一个 NOT NULL 字段。

例如,这个原始数据:

customer  Country  Country_Code Date
Dave      NULL     0            30/08/2017
David     UK       1            29/08/2017

需要显示为:

customer  Country  Country_Code
Dave      UK       1 
Dave      UK       1 

但是使用我目前正在使用的 select 查询,我得到了这个:

customer  Country  Country_Code
Dave      UK       0 
Dave      UK       0

有什么建议吗?

以下查询应该有效。

  SELECT FIRST_VALUE(NAME IGNORE NULLS) OVER (
        PARTITION BY customer_key ORDER BY last_updated_date DESC ROWS BETWEEN UNBOUNDED PRECEDING
                AND UNBOUNDED FOLLOWING
        ) AS NAME
    ,FIRST_VALUE(county IGNORE NULLS) OVER (
        PARTITION BY customer_key ORDER BY last_updated_date DESC ROWS BETWEEN UNBOUNDED PRECEDING
                AND UNBOUNDED FOLLOWING
        ) AS COUNTRY
    ,FIRST_VALUE((
            CASE 
                WHEN county IS NULL
                    THEN NULL
                ELSE country_code
                END
            ) IGNORE NULLS) OVER (
        PARTITION BY customer_key ORDER BY last_updated_date DESC ROWS BETWEEN UNBOUNDED PRECEDING
                AND UNBOUNDED FOLLOWING
        ) AS COUNTRY_CODE
FROM customers cust;