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

Откуда:
Сообщений: 211
Коллеги, доброе утро.
Прошу подсказать, почему так происходит.

Есть таблица:[email].[_SERVICE].[Max_date_From_vClosedDay5nt]
date balanceID InDateTime
2019-07-15 00:00:00.000 2140 2019-07-16 12:31:50.443
2019-07-16 00:00:00.000 2140 2019-07-17 13:46:50.453
2019-07-16 00:00:00.000 2140 2019-07-17 13:36:15.750
2019-07-16 00:00:00.000 2140 2019-07-17 13:29:24.380
2019-07-17 00:00:00.000 2140 2019-07-18 12:18:32.850
2019-07-18 00:00:00.000 2140 2019-07-19 13:31:08.047
2019-07-19 00:00:00.000 2140 2019-07-20 13:35:08.047
2019-07-20 00:00:00.000 2140 2019-07-21 13:31:08.047

Добавим в нее столбец begin_date

date balanceID InDateTime begin_date
2019-07-15 00:00:00.000 2140 2019-07-16 12:31:50.443 NULL
2019-07-16 00:00:00.000 2140 2019-07-17 13:46:50.453 NULL
2019-07-16 00:00:00.000 2140 2019-07-17 13:36:15.750 NULL
2019-07-16 00:00:00.000 2140 2019-07-17 13:29:24.380 NULL
2019-07-17 00:00:00.000 2140 2019-07-18 12:18:32.850 NULL
2019-07-18 00:00:00.000 2140 2019-07-19 13:31:08.047 NULL
2019-07-19 00:00:00.000 2140 2019-07-20 13:35:08.047 NULL
2019-07-20 00:00:00.000 2140 2019-07-21 13:31:08.047 NULL


столбец begin_date берется из таблицы increment

RepDate begin_date
2019-07-15 00:00:00.000 2019-07-16 12:35:39.200
2019-07-15 00:00:00.000 2019-07-16 13:11:21.453
2019-07-16 00:00:00.000 2019-07-17 13:31:27.850
2019-07-16 00:00:00.000 2019-07-17 13:45:38.850
2019-07-16 00:00:00.000 2019-07-17 13:46:10.850
2019-07-16 00:00:00.000 2019-07-17 13:48:35.850
2019-07-17 00:00:00.000 2019-07-18 12:20:23.047
2019-07-18 00:00:00.000 2019-07-19 13:32:01.047
2019-07-19 00:00:00.000 2019-07-20 13:36:01.047
2019-07-20 00:00:00.000 2019-07-21 13:37:01.047

Создадим процедуру, которая брала бы begin_Date из таблицы increment и вставляла бы в таблицу [email].[_SERVICE].[Max_date_From_vClosedDay5nt]:

ALTER PROCEDURE [spGet_Max_Date_From_increment]
AS
BEGIN

DECLARE @d AS datetime
SET @d = (SELECT MAX(RepDate) FROM [increment])

INSERT INTO [email].[_SERVICE].[Max_date_From_vClosedDay5nt]
(
begin_date
)
SELECT t1.begin_date

FROM [increment] t1
LEFT JOIN [email].[_SERVICE].[Max_date_From_vClosedDay5nt] t2 ON t1.repdate = t2.date
WHERE t2.date = @d AND t2.begin_date IS NULL
END
GO

При попытке запуска получаю следующее сообщение:
Msg 515, Level 16, State 2, Procedure _SERVICE.spGet_Max_Date_From_increment, Line 8 [Batch Start Line 10]
Cannot insert the value NULL into column 'date', table 'email._SERVICE.Max_date_From_vClosedDay5nt'; column does not allow nulls. INSERT fails.

причем тут спрашивается столбец DATE, когда я ничего туда не пытаюсь вставить.

SELECT же выдает:
begin_date
2019-07-21 13:37:01.047
то есть как раз то, что мне нужно.

DECLARE @d AS datetime
SET @d = (SELECT MAX(RepDate) FROM [increment])
SELECT t1.begin_date

FROM [increment] t1
LEFT JOIN [email].[_SERVICE].[Max_date_From_vClosedDay5nt] t2 ON t1.repdate = t2.date
WHERE t2.date = @d AND t2.begin_date IS NULL

Заранее благодарю Вас за направлению в нужное русло.
23 июл 19, 10:06    [21932358]     Ответить | Цитировать Сообщить модератору
 Re: Вставка данных  [new]
court
Member

Откуда:
Сообщений: 1858
dermama
направлению в нужное русло.
Update тебе нужен, а не INSERT
23 июл 19, 10:11    [21932362]     Ответить | Цитировать Сообщить модератору
 Re: Вставка данных  [new]
dermama
Member

Откуда:
Сообщений: 211
court
dermama
направлению в нужное русло.
Update тебе нужен, а не INSERT


))Да уж, век живи век учись, спасибо.
23 июл 19, 10:17    [21932366]     Ответить | Цитировать Сообщить модератору
 Re: Вставка данных  [new]
iap
Member

Откуда: Москва
Сообщений: 46909
dermama
court
пропущено...
Update тебе нужен, а не INSERT
))Да уж, век живи век учись, спасибо.
И LEFT JOIN в вашем скрипте не имеет никакого смысла.

P.S. Вы не видите ничего особенного в том, что накладываете ограничения на правую таблицу LEFT JOIN
без учёта NULL?
23 июл 19, 10:29    [21932375]     Ответить | Цитировать Сообщить модератору
 Re: Вставка данных  [new]
dermama
Member

Откуда:
Сообщений: 211
iap
dermama
пропущено...
))Да уж, век живи век учись, спасибо.
И LEFT JOIN в вашем скрипте не имеет никакого смысла.

P.S. Вы не видите ничего особенного в том, что накладываете ограничения на правую таблицу LEFT JOIN
без учёта NULL?


Спасибо, теперь вижу
23 июл 19, 11:13    [21932450]     Ответить | Цитировать Сообщить модератору
 Re: Вставка данных  [new]
dermama
Member

Откуда:
Сообщений: 211
iap
dermama
пропущено...
))Да уж, век живи век учись, спасибо.
И LEFT JOIN в вашем скрипте не имеет никакого смысла.

P.S. Вы не видите ничего особенного в том, что накладываете ограничения на правую таблицу LEFT JOIN
без учёта NULL?


хотя, секунду, поясните, пожалуйста, в чем мой недочет?
23 июл 19, 11:28    [21932479]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить