मेरे पास एक मालिक_आईडी फ़ील्ड के साथ एक वाहन तालिका है। यह स्वामी_आईडी किसी ग्राहक तालिका में आईडी फ़ील्ड या किसी व्यापार तालिका में आईडी फ़ील्ड के अनुरूप होगा। मैं उस तालिका के आधार पर अलग-अलग मूल्यों को वापस देख रहा हूं जो आईडी से संबंधित है।केस स्टेटमेंट के माध्यम से एकाधिक मानों का चयन करें?
SELECT v.Make, v.Model
FROM Vehicle v
LEFT JOIN Customer c ON c.ID = v.Owner_ID
LEFT JOIN Business b ON b.ID = v.Owner_ID
तो कहते हैं कि मैं ग्राहक उपनाम अगर owner_id = Customer.ID वापस करना चाहते हैं, और यदि owner_id = business_id व्यापार नाम:
मैं इस बयान की है। मैं जानता हूँ कि मैं इस तरह के रूप CASE
कथन का उपयोग कर सकते हैं:
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name
लेकिन वहाँ एक तरह से एक मामले बयान से एक से अधिक मान प्राप्त करने के लिए है? की तरह कुछ: (। मैं जानता हूँ कि यह पूरी तरह से जिस तरह से गलत है)
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN
SELECT c.Surname, c.Date_Of_Birth
WHEN b.ID IS NOT NULL THEN
SELECT b.Name, b.Founded
या मैं होगा करने के लिए:
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name
END AS "Name",
CASE WHEN c.ID IS NOT NULL THEN c.Date_Of_Birth
WHEN b.ID IS NOT NULL THEN b.Founded
END AS "DOB/Founded"
हाँ मैं कर सकता, लेकिन मैं कुछ अन्य बिट और टुकड़ों है कि यह एक नहीं जाने बनाता है बाहर छोड़ दिया कर सकता है, मैं नेस्टेड 'COALESCE' बयान के साथ यह कर सकता है, लेकिन मुझे लगता है कि मैं पठनीयता उद्देश्यों के लिए 'केस 'के साथ रहूंगा। – anothershrubery