У меня есть представление, которое показывает мне структуру моей организации. Теперь я хочу определить тип для каждой записи путем поиска соответствия в нескольких разных таблицах.
Я создаю веб-страницу, которая показывает вам OrgStructure. Чтобы упростить вещи, я хочу раскрасить вещи в зависимости от типа записи. Если это подразделение, я хочу, чтобы оно было зеленым, юниты - красным и так далее. Я подумал об использовании CASE WHEN и LEFT JOIN с разными таблицами, чтобы «найти совпадение», а затем установить тип. Есть мысли и идеи? В приведенном ниже коде вы видите мою отправную точку. Это показывает мне различные записи в структуре и на каком уровне. Но несколько разных вещей могут относиться ко мне на одном уровне, поэтому я также хочу определить тип.
SELECT ID
,BelongTo_ID
,Name
,IdPath
,LEN(IdPath) - LEN(REPLACE(IdPath, '/', '')) AS Level
,CASE WHEN EXISTS (SELECT * FROM dbo.atbl_Common_Orgstructure WITH(NOLOCK) WHERE BelongTo_ID = OS.ID)
THEN 0 ELSE 1 END AS IsEndpoint
FROM dbo.atbl_Common_Orgstructure OS WITH(NOLOCK)
У меня есть рабочее представление со структурой org, но теперь я хочу установить тип. Я хочу установить тип в зависимости от того, в какой таблице найдена запись. Если он найден в таблице «Подразделения», задайте тип «1», если он найден в таблице «Единицы измерения», установите тип «2» и т. Д.
Пример записей: