Я пытаюсь обновить столбец таблицы в SQL Server 2014 на основе значений в другом столбце из той же таблицы. Вот фрагмент таблицы.Обновление столбца в sqlserver на основе значений из другого столбца
CREATE TABLE [dbo].[Table1](
[id] [int] NULL,
[number] [varchar](50) NULL,
[fruit] [varchar](50) NULL
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (1, NULL, N'one')
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (2, NULL, N'apple')
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (3, NULL, N'banana')
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (4, NULL, N'orange')
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (5, NULL, N'two')
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (6, NULL, N'apple')
INSERT [dbo].[Table1] ([id], [number], [fruit]) VALUES (7, NULL, N'banana')
+----+--------+--------+
| id | number | fruit |
+----+--------+--------+
| 1 | NULL | one |
| 2 | NULL | apple |
| 3 | NULL | banana |
| 4 | NULL | orange |
| 5 | NULL | two |
| 6 | NULL | apple |
| 7 | NULL | banana |
+----+--------+--------+
+----+--------+--------+
| id | number | fruit |
+----+--------+--------+
| 1 | one | one |
| 2 | one | apple |
| 3 | one | banana |
| 4 | one | orange |
| 5 | two | two |
| 6 | two | apple |
| 7 | two | banana |
+----+--------+--------+
В основном я хочу, чтобы обновить нулевые столбцы числа со значениями из столбца плодов всякий раз, когда строка появляется, что это не «яблоко, банан, апельсин», и я хочу, чтобы значение, чтобы не быть введен до тех пор, новая строка появляется во фруктах. Таким образом, результат должен выглядеть как второй пример.
Я думаю, что нужно использовать цикл какой-то, но я не совсем уверен, как идти об этом, до сих пор моя попытка
declare @i varchar
set @i = 'one'
while @i = 'one' or @i not in ('apple', 'banana', 'orange')
begin
update Table1
set number = @i
set @i = fruit
end
Но я получаю сообщение об ошибке при попытке установить @ я = фрукты
Любая помощь очень ценится
Хранение данных - вот плохая идея. Плохо нормированная, избыточность данных, а также высокий риск несогласованности данных ... (Если вы действительно хотите это сделать, используйте либо представление, либо вычисленный столбец, либо, возможно, обработайте его с помощью триггеров.) – jarlh
Как и выше, это плохо структурированная система таблиц. Можете ли вы переделать его? Кроме того, в чем цель вставки «одного» и «двух» – Takarii
Добро пожаловать в stackoverflow. +1 для включения ddl + dml для выборочных данных в ваш вопрос. –