Я выполняю миграцию данных в новую базу данных с совершенно другой структурой. Использование SQL Server & T-SQL.
Вот пример SQLFiddle моих таблиц и где я дошел до сих пор:
http://sqlfiddle.com/#!18/d179b/1
У меня есть четыре таблицы:
CallNotes
Id, uniqueidentifier
OldCallRecordId, int -- Used for migrating only, not in final
Content, nvarchar(100)
CallTopics
Id, uniqueidentifier
Name, nvarchar(50)
CallNoteCallTopics
CallNoteId, uniqueidentifier
CallTopicId, uniqueidentifier
OldCallRecords
Id, int
CallTopicOne, bit
CallTopicTwo, bit
CallTopicThree, bit
CallTopicFour, bit
Я пытаюсь получить все значения true
CallTopic*
из OldCallRecords
в CallNoteCallTopics.CallTopicId
во время оператора INSERT
Все остальные таблицы уже содержат данные.
В настоящее время я пытаюсь использовать оператор CASE
, но это только дает мне первое истинное значение, а не то, что я хочу:
INSERT INTO CallNoteCallTopics
SELECT
CallNotes.Id,
CASE
WHEN OldCallRecords.CallTopicOne = 1
THEN (SELECT CallTopics.Id
FROM CallTopics
WHERE CallTopics.Name = 'Call Topic One')
WHEN OldCallRecords.CallTopicTwo = 1
THEN (SELECT CallTopics.Id
FROM CallTopics
WHERE CallTopics.Name = 'Call Topic Two')
WHEN OldCallRecords.CallTopicThree = 1
THEN (SELECT CallTopics.Id
FROM CallTopics
WHERE CallTopics.Name = 'Call Topic Three')
WHEN OldCallRecords.CallTopicFour = 1
THEN (SELECT CallTopics.Id
FROM CallTopics
WHERE CallTopics.Name = 'Call Topic Four')
END
FROM
OldCallRecords
LEFT JOIN
CallNotes ON CallNotes.OldCallRecordId = OldCallRecords.Id