Мне нужно вставить оператор SELECT CASE, чтобы добавить столбец "acct_profile_ext.acct_pay_terms" во вложенную таблицу условий. Таким образом, единственная таблица, которая может быть связана с этой таблицей, - это "acct_profile", то есть "acct_profile.acct_id = acct_profile_ext.acct_id". Проблема в том, что эта таблица "acct_profile" также сильно связана с другой таблицей, поэтому мне нужно добавить этот столбец, не влияя на результат другой таблицы.
Итак, теперь я вставил оператор в часть столбца, но я не уверен, как добавить столбец с условием WHERE внутри оператора SELECT CASE.
(SELECT CASE acct_profile_ext.acct_pay_terms
WHEN 'CASH' THEN
(SELECT acct_profile_ext.acct_pay_terms FROM acct_profile_ext, acct_profile
WHERE acct_profile.acct_id = acct_profile_ext.acct_id)
WHEN 'CHEQUE' THEN
(SELECT acct_profile_ext.acct_pay_terms FROM acct_profile_ext, acct_profile
WHERE acct_profile.acct_id = acct_profile_ext.acct_id)
ELSE NULL
END
FROM acct_profile_ext)
Пожалуйста, посоветуйте и помогите. Спасибо.
Почему вы используете эти подвыборки, а не просто обычные join?
@iamdave явно ОП думает, что это все еще 1989 год. :)
Также MySQL и SQL Server - это совершенно разные продукты. Пожалуйста, пометьте только соответствующую СУБД. Учитывая, что вы отметили SQL Server 2008, я предполагаю, что это то, что вы используете, а не MySQL.
Пора начать использовать соединения в стиле ANSI-92. Они существуют уже более 25 лет. sqlblog.org/2009/10/08/bad-habits-to-kick-using-old-style-jo ins
Но, честно говоря, это требует капитального ремонта. Выражение case используется для возврата скалярного значения, здесь его нет. Нам нужно гораздо больше деталей, чтобы мы могли помочь. Вот отличное место для начала. spaghettidba.com/2015/04/24/…


Образцы данных и желаемый результат очень помогут, так как ваш вопрос неясен. 1. Что вы подразумеваете под «без эффекта результат другой таблицы»? Вставка влияет ТОЛЬКО на имя таблицы, следующее за словом «вставить», независимо от объединений. 2. Ваши подзапросы такие же в случае CASH и CHECK 3. Вероятно, лучше выполнить несколько соединений вместо подзапросов 4. Многие посоветуют перейти к синтаксису внутреннего соединения, а не к старому синтаксису «tablename1, tablename2».