Еще раз спасибо. Пожалуйста, найдите мои образцы данных ниже.
- Данные испытаний получены из файла CSV. LandId - это отношение M: M к таблице заголовков.
- Таким образом, для определенного идентификатора TitleID будет только один landId, но с одним идентификатором земли может быть связано много TitleID.
- Существует мосттаблица с именем ## land_title между таблицей заголовков и таблицей земель.
- По сути, я хочу добавить записи из csv в существующие записи в таблице земель, а затем вставить соответствующие значения в ## land_title, а затем в таблицу заголовков.
- Я пробовал этот метод, но мне нужна помощь от вас, ребята. Надеюсь, что это имеет смысл.
INSERT INTO ##land_title( LandId, titleid, CreatedDateTime, CreatedUserID )
SELECT LandID, Land_TitleID, getdate(),'xyz'
FROM #Testdata as sd
OUTPUT inserted or SCOPE_IDENTITY()
CREATE TABLE #Testdata
(
LandID INT,
ReferenceID INT,
Land_TitleID VARCHAR(MAX)
)
INSERT #Testdata SELECT 1, 9, '18,20,22'
INSERT #Testdata SELECT 2, 8, '17,19'
INSERT #Testdata SELECT 3, 7, '13,19,20'
INSERT #Testdata SELECT 4, 6, ''
INSERT #Testdata SELECT 9, 11, '1,2,3,4'
Select * from #Testdata
;WITH tmp(LandID, ReferenceID, DataItem, Land_TitleID) AS
(
SELECT
LandID,
ReferenceID,
LEFT(Land_TitleID, CHARINDEX(',', Land_TitleID + ',') - 1),
STUFF(Land_TitleID, 1, CHARINDEX(',', Land_TitleID + ','), '')
FROM #Testdata
UNION all
SELECT
LandID,
ReferenceID,
LEFT(Land_TitleID, CHARINDEX(',', Land_TitleID + ',') - 1),
STUFF(Land_TitleID, 1, CHARINDEX(',', Land_TitleID + ','), '')
FROM tmp
WHERE
Land_TitleID > ''
)
SELECT
LandID,
ReferenceID,
DataItem
FROM tmp
ORDER BY LandID
Спасибо
R