Я пытаюсь заполнить таблицу (Loc
) данными из другой таблицы (Test.dbo.ML
).
Поле [VALID_FROM]
должно быть заполнено датой из третьей таблицы (Test.dbo.TEN
), которую необходимо объединить с четвертой таблицей (Test.dbo.ST
), чтобы определить, какую N_ID
следует использовать для получения Дата. И это проблема, с которой я столкнулся!
Поле [N_ID]
, которое находится сразу после оператора SELECT
, должно быть s.N_ID
в предложении where
объединения. Как я могу сделать что-то подобное?
Я использую SQL Server 2017.
Я изучил @@IDENTITY
И SCOPE_IDENTITY()
, но, похоже, они не связаны с проблемой, которую я пытаюсь решить.
INSERT INTO [Loc] ([LOC_ID], [TYPE], [ADRESS], [POST_CODE],
[LAT], [LONG], [GEOMETRY], [VALID_FROM])
SELECT
[N_ID], 'some place', [ADDRESS], [FSALDU],
[COORDY], [COORDX], [GEOM],
(SELECT MIN(t.open_date)
FROM Test.dbo.TEN t
JOIN Test.dbo.ST s ON t.S_ID = s.S_ID
WHERE s.N_ID = 'problem is here!')
FROM
Test.dbo.ML
Для поля [VALID_FROM]
я должен получить самую раннюю доступную дату, и, следовательно, MIN(t.open_date)
.
Test.dbo.TEN (S_ID, open_date)
Test.dbo.ST (S_ID, N_ID)
Test.dbo.ML (N_ID, АДРЕС, FSALDU, COORDY, COORDX, GEOM)
Это оператор вставки, но получение самой ранней даты open_date для правильного N_ID, который вставляется в новую таблицу [Loc], является настоящей проблемой здесь!