У меня есть пример двух строк со следующим макетом:
'КОМПАНИЯ А - 01 января 19 - 30 июня 19 - 100,00%'
'КОМПАНИЯ Б - 01 января -19 - 30 июня-19 - 50,00% / КОМПАНИЯ C - 01-января-19 - 30-июня-19 - 50,00% '.
Описывает процент консультанта, который работает в определенный клиент или несколько клиентов. Я получаю их информацию в макете выше. Я хотел бы разделить эти строки и сохранить их в таблице. Структура таблицы следующая (с намеренными данными в скобках):
- ID - Число - Автомат c сгенерированный идентификатор строки
- ConsultantID - номер - внешний ключ к таблице Person
- Company - Varchar2 (128) - -Название компании, в которой работает консультант (Компания А)
- StartDate - Дата - Дата начала проекта (01-Jan-19 )
- Конечная дата - Дата - Дата окончания проекта (30 июня 19)
- Процент - Число - Процент времени, в течение которого консультант работает на клиенте (100,00%)
Насколько я видел, максимальное количество компаний, в которых работает один, равно двум, но может быть и больше.
Я работаю в Oracle SQL, и это не подлежит обсуждению с проектом, с которым я работаю.
Я начал с PL / SQL не так долго а go (полагаю, мне нужен PL / SQL для этого, потому что я не могу найти способ сделать это только с Oracle SQL), и я не нашел способ сделать эту работу. Разделение не является проблемой, когда есть одна (очевидная) или две разные компании, но если их больше двух, я не знаю, как это автоматизировать. С такими языками, как Java, это не Это не проблема с массивами и a для l oop, но в PL / SQL для меня это все еще проблема ...
Ниже некоторого кода, который я использую для разделения.
DECLARE
total varchar2(256) := 'Company B - 01-Jan-19 - 30-Jun-19 - 50.00% / Company C - 01-Jan-19 - 30-Jun-19 - 50.00%';
firstPart varchar2(128);
secondPart varchar2(128);
BEGIN
firstPart := SUBSTR(total, 0, (INSTR(total, '/')) -2);
secondPart := SUBSTR(total, (INSTR(total, '/')) +2);
END;
Есть ли способ заставить эту работу работать с (потенциально) бесконечными компаниями? Если это очень сложно, я могу предположить, что люди работают не более чем в пяти компаниях, но я очень хотелось бы, чтобы не было максимума.
Вторая часть - это разделение названия компании, даты начала, даты окончания и процента. Я не думаю, что это так сложно, но это может иметь отношение к решению основной проблемы. Поэтому, если у вас есть решение основной проблемы, я могу его оттуда найти.
Не стесняйтесь задавать любые вопросы или заставлять меня чувствовать себя глупо, потому что это легко, и я просто еще не нашел решение.
Заранее большое спасибо!