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

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

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.

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019

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

select *, row_number() over(partition by product order by country) as rn
from tablename
1 голос
/ 09 апреля 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...