У меня снова возникла проблема: D
сначала немного информации:
Я пытаюсь скопировать данные из одной таблицы в другую таблицу (структура та же).
теперь нужно увеличить одну ячейку, начиная с 1 на группу (как в истории).
У меня есть эта таблица:
create table My_Test/My_Test2 (
my_Id Number(8,0),
my_Num Number(6,0),
my_Data Varchar2(100));
(my_Id, my_Num - это вложенный ПК)
если я хочу вставить новую строку, мне нужно проверить, существует ли значение в my_id
.
если это правда, тогда мне нужно использовать следующий my_Num
для этого идентификатора.
У меня есть это в моей таблице:
My_Id My_Num My_Data
1 1 'test1'
1 2 'test2'
2 1 'test3'
если я добавлю строку для my_Id
1, строка будет выглядеть следующим образом:
у меня есть это в моей таблице:
My_Id My_Num My_Data
1 3 'test4'
это звучит довольно просто, теперь мне нужно сделать это в SQL
и на SQL Server у меня была такая же проблема, и я использовал это:
Insert Into My_Test (My_Id,My_Num,My_Data)
SELECT my_Id,
(
SELECT
CASE (
CASE MAX(a.my_Num)
WHEN NULL
THEN 0
Else Max(A.My_Num)
END) + b.My_Num
WHEN NULL
THEN 1
ELSE (
CASE MAX(a.My_Num)
WHEN NULL
THEN 0
Else Max(A.My_Num)
END) + b.My_Num
END
From My_Test A
where my_id = 1
)
,My_Data
From My_Test2 B
where my_id = 1;
этот выбор возвращает ноль, если в подвыборке строк не найдено
Есть ли способ, чтобы я мог использовать Макс в случае? и если он возвращает ноль, он должен использовать 0 или 1?
Edit:
Im usung теперь это:
Insert INTO My_Test ( My_Id,My_Num,My_Data )
SELECT B.My_Id,
(
SELECT COALESCE(MAX(a.My_Num),0) + b.my_Num
FROM My_Test A
Where a.My_Id = b.My_Id)
,b.My_Data
FROM My_Test2 B
WHERE My_Id = 1
THX пони Бхарату и OMG
приветствует
Ауро