SQL - 添加列指示是否是第一次看到条目
SQL - Add Column Indicating if it's the first time an entry is seen
我有一个现有的 table(称之为 FruitOrders),其中有很多列,其中之一是水果:
Fruit
Order Time
Apple
2022-09-09 22:21:03
Banana
2022-09-10 22:21:03
Pineapple
2022-09-11 22:21:03
Orange
2022-09-12 22:21:03
Apple
2022-09-13 22:21:03
Orange
2022-09-14 22:21:03
Blueberry
2022-09-15 22:21:03
我想添加一个新列作为视图,如果它是看到水果的第一行,它将是“1”。示例如下:
Fruit
First Time Seeing Fruit?
Apple
1
Banana
1
Pineapple
1
Orange
1
Apple
0
Orange
0
Blueberry
1
关于如何做到这一点有什么想法吗?我在猜测涉及 partition/row_number 的内容,但我是使用这些的新手。此外,这是一个很大的 table,所以如果有快速的方法可以做到这一点,请告诉我!
CASE 中的 window 函数 row_number() 是一个选项
例子
Select *
,Flag = case when row_number() over (partition by Fruit order by [Order Time]) = 1 then 1 else 0 end
From YourTable
Order by [Order Time]
结果
我有一个现有的 table(称之为 FruitOrders),其中有很多列,其中之一是水果:
Fruit | Order Time |
---|---|
Apple | 2022-09-09 22:21:03 |
Banana | 2022-09-10 22:21:03 |
Pineapple | 2022-09-11 22:21:03 |
Orange | 2022-09-12 22:21:03 |
Apple | 2022-09-13 22:21:03 |
Orange | 2022-09-14 22:21:03 |
Blueberry | 2022-09-15 22:21:03 |
我想添加一个新列作为视图,如果它是看到水果的第一行,它将是“1”。示例如下:
Fruit | First Time Seeing Fruit? |
---|---|
Apple | 1 |
Banana | 1 |
Pineapple | 1 |
Orange | 1 |
Apple | 0 |
Orange | 0 |
Blueberry | 1 |
关于如何做到这一点有什么想法吗?我在猜测涉及 partition/row_number 的内容,但我是使用这些的新手。此外,这是一个很大的 table,所以如果有快速的方法可以做到这一点,请告诉我!
CASE 中的 window 函数 row_number() 是一个选项
例子
Select *
,Flag = case when row_number() over (partition by Fruit order by [Order Time]) = 1 then 1 else 0 end
From YourTable
Order by [Order Time]
结果