Спасибо за разъяснения по поводу публикации.Я пытался сделать это простым, но вот некоторые дополнительные детали / глубины для того, что я пытаюсь достичь.
По сути, я хочу провести поиск по 3 различным полям и сначала определить программу «Бакалавриат» (если она существует).Если не существует действительной программы бакалавриата, я хочу найти программу «Выпускник» (если она существует).Если никакой аспирантуры не существует, то я хочу найти «докторскую» программу.
У меня есть 6 столбцов, с которыми я пытаюсь работать.Вот пример:
Program1 Program2 Program3 AcadLevel1 AcadLevel2 AcadLevel3
DNP.FNP GR NULL DO GR NULL
MS.ACT BS.BUAN NULL GR UG NULL
DNP.FNP GR NULL DO GR NULL
EDD.EDLC GR NULL DO GR NULL
MAED.EDL EDD.EDLC GR GR DO GR
DNP.FNP GR UG DO GR UG
Я хочу игнорировать все значения NULL и игнорировать любые "GR", "UG" или "DO" в любом из полей Program1, 2 и 3, какони не являются действительными идентификаторами программ.Их следует использовать только для определения академического уровня программы.
Конечная цель - определить одну программу.Если есть программа бакалавриата, это должна быть эта программа.Если нет программы бакалавриата, то это должна быть программа магистратуры.Если нет аспирантуры, докторантура.Если есть две программы бакалавриата, мне все равно, какая из них включена.И точно так же, если есть 2 программы для выпускников (и нет программ для студентов), то одной из них будет достаточно.
Одна из проблем, с которой я сталкиваюсь, заключается в том, что существует множество возможностей того, как программы «выкладываются» втри столбца ... нет определенного порядка или последовательности.
Еще раз спасибо за любую помощь / руководство и извините за ранее путаницу.
###################### Обновление
Вотпример того, что я пытаюсь выполнить:
CASE WHEN ISNULL(Program2,'')='' THEN Program1
WHEN (AcadLevel1 = 'UG' and Program1 NOT IN ('UG','SP','GR','DO')) THEN Program1
WHEN (AcadLevel1 = 'UG' and Program1 IN ('UG','SP','GR','DO')) THEN
CASE WHEN ISNULL(Program2,'')='' THEN Program1
WHEN Program2 IN ('UG','SP','GR','DO') AND ISNULL(Program3,'')='' THEN Program2
WHEN Program2 IN ('UG','SP','GR','DO') AND ISNULL(Program3,'')<>'' THEN Program3
WHEN Program2 IN ('UG','SP','GR','DO') AND Program3 IN ('UG','SP','GR','DO') THEN Program1
WHEN Program2 NOT IN ('UG','SP','GR','DO') AND ISNULL(Program3,'')='' THEN Program2
WHEN Program2 NOT IN ('UG','SP','GR','DO') AND AcadLevel2 = 'UG' THEN Program2
WHEN Program2 NOT IN ('UG','SP','GR','DO') AND AcadLevel3 = 'UG' AND Program3 NOT IN ('UG','SP','GR','DO') THEN Program3
ELSE 'Other'
END
ELSE 'Other2'
END AS 'Program_New'
Мне трудно анализировать все возможные сценарии между всеми полями, чтобы получить правильное значение программы.И хотя я могу продолжать писать дополнительные операторы CASE до тех пор, пока у меня не будет «других» кодов ошибок, я все равно не буду знать, исправят ли они все возможные сценарии.
Я надеялся на более всеобъемлющее и простое решение, но, возможно, его нет ...