Мне интересно, могу ли я выбрать значение столбца, если столбец существует, и просто выберите null в противном случае. Другими словами, я бы хотел «поднять» оператор select, чтобы обработать случай, когда столбец не существует.Выберите columnValue, если столбец существует иначе null
SELECT uniqueId
, columnTwo
, /*WHEN columnThree exists THEN columnThree ELSE NULL END*/ AS columnThree
FROM (subQuery) s
Примечание. Я посередине, чтобы закрепить мою модель данных и дизайн. Я надеюсь исключить эту логику в ближайшие недели, но мне бы очень хотелось выйти за рамки этой проблемы, потому что исправление модели данных - это более трудоемкое занятие, чем я хотел бы сейчас заняться.
Также обратите внимание, что я хотел бы иметь возможность сделать это в одном запросе. Так что я не ищу ответа, как
проверить, какие столбцы находятся в вашем подзапросе. Затем измените свой запрос , чтобы соответствующим образом обрабатывать столбцы вашего подзапроса.
Почему вы пишете код, предполагающий, что ваша модель данных будет волей-неволей? Почему не код для существующих столбцов, и когда ColumnThree становится постоянным первоклассным гражданином в вашей модели данных, исправьте запрос? Также я настоятельно рекомендую не сообщать людям, что вы не ищете.Ваше ограничение, как указано, невозможно встретить, и вам нужно дать более вескую причину. В одном запросе очень мало смысла, если вы можете инкапсулировать вещи в хранимую процедуру. –
@AaronBertrand Вы задали два вопроса, поэтому я обращусь к обоим. Во-первых, моя цель - как можно скорее отправить высококачественную функцию. Прямо сейчас мне нужны значения из 'ColumnThree', когда они существуют, чтобы моя функция работала правильно. Поэтому я собираюсь использовать этот столбец, когда он существует ... даже если решение не изящно. –
@AaronBertrand Во-вторых, я ценю вашу рекомендацию, но с уважением не согласен. Я хочу четко выразить свои требования, чтобы пользователи могли сосредоточиться на том, чтобы предлагать решения, которые решают мою проблему, не теряя времени, написав ответы, которые, как я знаю, будут неудовлетворительными. Я думаю, что именно то, что не будет удовлетворительным ответом, поможет пользователям сосредоточиться на более эффективных решениях. –