Предположим, у меня есть таблица ниже, как ниже

Column a                         Column b
------------------------------------------
aaaa                              13     
aaaa                              22     
aaaa                               3     
aaaa                              23    
bbbb                              44    
bbbb                              56    
bbbb                               9     
bbbb                               0   

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

Я пытаюсь придумать оператор SQL

DECLARE @Count INT 
SET @count = 4

case when @count <= 4 then
while @Count = @Count - 1 and @Count <> 0
select @Count + columnA, columnBform tablename

После выполнения запроса я хочу, чтобы данные отображались, как показано ниже

Column a                         Column b
------------------------------------------
1aaaa                              13     
2aaaa                              22     
3aaaa                               3     
4aaaa                              23    
1bbbb                              44    
2bbbb                              56    
3bbbb                               9     
4bbbb                               0
0
Tafara Mark Vambe 10 Окт 2019 в 12:43

2 ответа

Лучший ответ

Вы делаете это, используя оконную функцию ROW_NUMBER как

SELECT CONCAT(ROW_NUMBER() OVER(PARTITION BY Col1 ORDER BY Col1), Col1) Col1,
       Col2
FROM
(
  VALUES
  ('aaaa',                              13),     
  ('aaaa',                              22),     
  ('aaaa',                              3 ),    
  ('aaaa',                              23),    
  ('bbbb',                              44),    
  ('bbbb',                              56),    
  ('bbbb',                              9 ),    
  ('bbbb',                              0 )
) T(Col1, Col2)

Online Demo

0
Sami 10 Окт 2019 в 09:48

Вы можете использовать ROW_NUMBER():

SELECT
    CAST(ROW_NUMBER() OVER(PARTITION BY column_a ORDER BY column_b) AS VARCHAR(5))
        + column_a,
    column_b
FROM mytable

Это назначит увеличивающиеся числа в каждой группе записей, разделяющих sahme column_a, по возрастанию column_b. Вы можете использовать другой столбец, чтобы упорядочить записи, если это более удобно для вас.

0
GMB 10 Окт 2019 в 09:46