Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सशर्त जॉइन स्टेटमेंट SQL सर्वर

मुझे लगता है कि आप जो मांग रहे हैं वह आरंभिक . में शामिल होने से काम करेगा Option_A . दोनों के लिए तालिका और Option_B LEFT JOIN का उपयोग कर रहे हैं , जो कुछ इस तरह का उत्पादन करेगा:

Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B

उदाहरण कोड:

SELECT i.*, COALESCE(a.id, b.id) as Option_Id, COALESCE(a.name, b.name) as Option_Name
FROM Initial_Table i
LEFT JOIN Option_A_Table a ON a.initial_id = i.id AND i.special_value = 1234
LEFT JOIN Option_B_Table b ON b.initial_id = i.id AND i.special_value <> 1234

एक बार ऐसा करने के बाद, आप NULLS के सेट को 'अनदेखा' कर देते हैं। यहां अतिरिक्त चाल SELECT लाइन में है, जहां आपको यह तय करने की आवश्यकता है कि NULL फ़ील्ड के साथ क्या करना है। यदि Option_A और Option_B टेबल समान हैं, तो आप COALESCE का उपयोग कर सकते हैं पहला NON NULL मान (उदाहरण के अनुसार) वापस करने के लिए कार्य करता है।

दूसरा विकल्प यह है कि आपको बस Option_A फ़ील्ड और Option_B फ़ील्ड को सूचीबद्ध करना होगा, और जो कुछ भी ResultSet का उपयोग कर रहा है उसे करने दें यह निर्धारित करने के लिए कि किन क्षेत्रों का उपयोग करना है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में बैच मोड बिटमैप्स

  2. कैसे सही ढंग से nvarchar . में नई पंक्ति सम्मिलित करने के लिए

  3. डेटटाइम टू टाइम कास्ट कैसे करें

  4. SQL सर्वर में LIMIT 10..20

  5. SQL सर्वर में RANK () का उपयोग कैसे करें