为具有相同标识符的多个条目分配增量值

时间:2019-01-22 00:56:40

标签: google-bigquery

我遇到这种情况,即相同的值(项目)可以分配多个日期

Item1   01/01/2018
Item1   01/03/2018
Item1   01/05/2018
Item2   01/01/2018
Item2   01/03/2018
Item3   01/03/2018

是否可以为同一商品的每个日期值分配一个数字,以便输出将是数字的递增列表(每个不同的商品从1开始并进行计数)?

Item1   01/01/2018   1
Item1   01/03/2018   2
Item1   01/05/2018   3
Item2   01/01/2018   1
Item2   01/03/2018   2
Item3   01/03/2018   1

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

以下是用于BigQuery标准SQL

#standardSQL
SELECT item, dt, 
  ROW_NUMBER() OVER(PARTITION BY item ORDER BY PARSE_DATE('%d/%m/%Y', dt)) value
FROM `project.dataset.table`

您可以使用

提供的示例数据进行测试,操作
#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Item1' item, '01/01/2018' dt UNION ALL
  SELECT 'Item1', '01/03/2018' UNION ALL
  SELECT 'Item1', '01/05/2018' UNION ALL
  SELECT 'Item2', '01/01/2018' UNION ALL
  SELECT 'Item2', '01/03/2018' UNION ALL
  SELECT 'Item3', '01/03/2018' 
)
SELECT item, dt, 
  ROW_NUMBER() OVER(PARTITION BY item ORDER BY PARSE_DATE('%d/%m/%Y', dt)) value
FROM `project.dataset.table`
ORDER BY item, dt   

有结果

Row item    dt          value    
1   Item1   01/01/2018  1    
2   Item1   01/03/2018  2    
3   Item1   01/05/2018  3    
4   Item2   01/01/2018  1    
5   Item2   01/03/2018  2    
6   Item3   01/03/2018  1