У меня есть общий запрос, который выглядит так:
SELECT DISTINCT pb.id, pb.last, pb.first, pb.middle, pb.sex, pb.phone, pb.type,
specialties = substring(
SELECT ('|' + cs.specialty )
FROM CertSpecialty AS cs
INNER JOIN CertSpecialtyIndex AS csi on cs.specialty = csi.specialty
WHERE cs.id = pb.id
ORDER BY cs.sequence_no
FOR XML path(''),2,500)
FROM table AS pb
WHERE etc etc etc
Проблема заключается в следующем:
Выбираемый мной столбец "type" является целым числом - типы 1-4.
В подзапросе посмотрите, куда я запрашиваю, из таблицы CertSpecialty прямо сейчас.
Что мне действительно нужно сделать, так это, если поле type возвращается как 1 или 3, это таблица, которую мне нужно запросить. Но если результатом строки является тип 2 или 4 (т. Е. ELSE), мне нужно запросить тот же столбец в таблице CertSpecialtyOther.
Так что это должно выглядеть примерно так (хотя этот obv не работает):
SELECT DISTINCT pb.id, pb.last, pb.first, pb.middle, pb.sex, pb.phone, pb.type,
specialties =
IF type in (1,3)
substring((SELECT ('|' + cs.specialty )
FROM CertSpecialty AS cs
INNER JOIN CertSpecialtyIndex AS csi on cs.specialty = csi.specialty
WHERE cs.id = pb.id
ORDER BY cs.sequence_no
FOR XML path(''),2,500)
ELSE
substring((SELECT ('|' + cs.specialty )
FROM CertSpecialtyOther AS cs
INNER JOIN CertSpecialtyIndex AS csi on cs.specialty = csi.specialty
WHERE cs.id = pb.id
ORDER BY cs.sequence_no
FOR XML path(''),2,500)
end
FROM table AS pb
WHERE etc etc etc
Возможно ли это? Если так, какой правильный синтаксис? Есть ли более простой способ написать это, когда я переключаю таблицу, к которой я обращаюсь, не дублируя подзапрос?
Кроме того, у кого-нибудь есть хороший ресурс, который он мог бы связать со мной для такого рода вещей, чтобы узнать больше помимо этого?
Заранее спасибо.