Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как трансформировать значения столбца в зависимости от значений другого, той же таблицы?  [new]
Ferum1
Member

Откуда:
Сообщений: 121
Возможна ли нормализовать колонку id_coor в зависимости от Color?

Таблица

id_color Color
1 red
2 red
5 green
4 green

В итоге должна получиться таблица

id_color Color
1 red
1 red
4 green
4 green
27 мар 18, 19:01    [21291137]     Ответить | Цитировать Сообщить модератору
 Re: Как трансформировать значения столбца в зависимости от значений другого, той же таблицы?  [new]
londinium
Member

Откуда: Киев
Сообщений: 1135
Ferum1,
Что-то в таком духе
IF OBJECT_ID(N'TEMPDB..#COLOR',N'U')IS NOT NULL
  DROP TABLE TEMPDB..#COLOR;

CREATE TABLE #COLOR
(
  ID TINYINT NOT NULL,
  COLOR VARCHAR(10)NOT NULL
)
  
INSERT #COLOR(ID,COLOR)
(
  SELECT 1,'RED'
   UNION ALL
  SELECT 2, 'RED'
    UNION ALL
  SELECT 5,'GREEN'
    UNION ALL
  SELECT 4,'GREEN'      
);

WITH MINCOLOR AS
(
  SELECT MIN(T.ID)MINID,T.COLOR
   FROM #COLOR T
   GROUP BY T.COLOR
)
UPDATE T SET
 T.ID=MC.MINID
FROM #COLOR T
JOIN MINCOLOR MC ON T.COLOR=MC.COLOR

SELECT * FROM #COLOR; 

DROP TABLE #COLOR;
27 мар 18, 22:01    [21291457]     Ответить | Цитировать Сообщить модератору
 Re: Как трансформировать значения столбца в зависимости от значений другого, той же таблицы?  [new]
andrey odegov
Member

Откуда:
Сообщений: 463
MERGE доступен?
merge #color t
  using(select min(id) mi,color from #color group by color) s
  on t.color=s.color
  when matched then update set t.id=s.mi;
27 мар 18, 22:37    [21291555]     Ответить | Цитировать Сообщить модератору
 Re: Как трансформировать значения столбца в зависимости от значений другого, той же таблицы?  [new]
Ferum1
Member

Откуда:
Сообщений: 121
Спасибо коллеги, буду разбираться.
29 мар 18, 00:02    [21294730]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить