1
我有一個看起來像這樣的一般查詢:基於外部查詢SQL子查詢選擇表
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
的問題是這樣的:
「類型」一欄,我是選擇是一個整數 - 1-4型。
在子查詢中,查看我現在從表CertSpecialty查詢的位置。
我真正需要做的是,如果類型字段返回爲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
這可能嗎?如果是這樣,那麼正確的語法是什麼?有沒有一種更簡單的方式來寫它,我切換哪個表我查詢沒有完全複製子查詢?
另外,有沒有人有一個很好的資源,他們可以鏈接我這種事情,以瞭解更多除了?
在此先感謝。
好的,那段代碼對我來說很合理。然而,我在哪裏把它與外部查詢相關? – 2011-06-15 17:12:19
想通了。我學到了一些新東西。非常感謝您的幫助。 – 2011-06-15 17:42:17