我遇到这种情况,即相同的值(项目)可以分配多个日期
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
感谢您的帮助!
答案 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