Я хочу создать столбец, который «анонимизирует» столбец стран для каждого продукта

Каждая строка в моей таблице указывает продукт и страну, в которой он был куплен. Так:

Product 1, Country A
Product 1, Country B
Product 1, Country C
Product 2, Country A
Product 2, Country B

Я хочу добавить еще один столбец, который в основном подсчитывает каждую страну по продукту. Каждый раз, начиная с одного для нового продукта.

    Product 1, Country A, Country 1
    Product 1, Country B, Country 2
    Product 1, Country C, Country 3
    Product 2, Country A, Country 1
    Product 2, Country B, Country 2

В прошлом это делалось в скрипте vba, просто запуская цикл, сравнивающий название продукта с названием продукта из предыдущей строки, добавляя +1, если оно совпадает, и 1, если это не так. Мне было интересно, есть ли способ добиться этого с помощью SQL.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

использовать row_number()

select *, row_number() over(partition by product order by country) as rn
from tablename
Ответ принят как подходящий
CREATE TABLE #Table1
    ([col1] varchar(9), [col2] varchar(9))
;

INSERT INTO #Table1
    ([col1], [col2])
VALUES
    ('Product 1', 'Country A'),
    ('Product 1', 'Country B'),
    ('Product 1', 'Country C'),
    ('Product 2', 'Country A'),
    ('Product 2', 'Country B')
;
select *, concat('Country',' ',row_number() over(partition by [col1] order by [col1])) as rn_column
from #Table1

выход

col1         col2       rn_column
Product 1   Country A   Country1
Product 1   Country B   Country2
Product 1   Country C   Country3
Product 2   Country A   Country1
Product 2   Country B   Country2

Другие вопросы по теме