Скрыть столбец row_number () - PullRequest
1 голос
/ 31 марта 2020

Я использую row_number () в качестве счетчика, чтобы посмотреть, есть ли какие-либо данные с указанными мною условиями. Я хочу строки, где р = 1, но мне не нужен фактический столбец, который дает р = 1 для каждой строки. Можно ли как-то исключить этот столбец?

with base as(
select
      state.simple as State,
      customer_status,
      cast(created_at as date) as Order_Date,
      cast(dbt_valid_from as date) as Aktiv_Start_Date,
      **row_number() over (partition by lower(email) order by dbt_valid_from) as p**

from analytics.fct_orders_all

left join `analytics.dim_customers_history` on
    lower(customer.email) = lower(email)

where customer_status like "Aktiv%"
  and state.simple = "pending"
  and dbt_valid_from between created_at and timestamp_add(created_at, interval 14 day)
)
select *

from base
**where p = 1**

order by 4 desc

Ответы [ 3 ]

4 голосов
/ 31 марта 2020

Большой запрос имеет хорошее расширение под названием SELECT * EXCEPT:

with base as (...)
select * except(p) from base where p = 1 order by 4
2 голосов
/ 31 марта 2020

BigQuery позволяет это, используя except:

select b.* except (p)
from base b
where p = 1;

Вы также можете использовать replace, чтобы также изменить названия столбцов. Эти очень удобные модификаторы описаны в документации .

1 голос
/ 31 марта 2020

Вы всегда можете избежать использования select *

У меня есть похожий запрос здесь:

;with base as(
select
     'Pending' as State,
      a.preferredName,
      cast(createDate as date) as Order_Date,
      cast(birthdate as date) as Aktiv_Start_Date,
       a.nationalitycode,
      row_number() over (partition by a.nationalitycode order by a.nationalitycode) as p

from [app].[applicant] a


)
select *
from base
where p = 1
order by 4 desc

enter image description here

Установка список столбцов that I want to see неявных в select:

;with base as(
select
     'Pending' as State,
      a.preferredName,
      cast(createDate as date) as Order_Date,
      cast(birthdate as date) as Aktiv_Start_Date,
       a.nationalitycode,
      row_number() over (partition by a.nationalitycode order by a.nationalitycode) as p

from [app].[applicant] a


)
select 
 State,
 preferredName,
 Order_Date,
 Aktiv_Start_Date,
 nationalityCode
from base
where p = 1
order by 4 desc

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...