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

TSQL एक CASE मान के आधार पर भिन्न तालिका से चयन करें

IF . का उपयोग करना (उचित तरीका)

IF @Var = 'AA'
BEGIN
    SELECT ID FROM Table1
    -- WHERE ...
END
ELSE IF @Var = 'BB'
BEGIN
    SELECT ID FROM Table2 
    -- WHERE ...
END
ELSE
BEGIN
    SELECT ID FROM Table3  
    -- WHERE ...
END

अन्य तरीके (आपको बचना चाहिए लेकिन मैं संदर्भ के लिए पोस्ट करूंगा)

डायनामिक एसक्यूएल का उपयोग करना

DECLARE @sql NVARCHAR(MAX)
SELECT @sql = 'SELECT ID FROM ' + CASE @Var WHEN 'AA' THEN 'Table1' 
                                            WHEN 'BB' THEN 'Table2' ELSE 'Table3' END + ' -- WHERE ...'
EXEC(@sql)

UNION का उपयोग करना

SELECT Id
FROM Table1
WHERE @Var='AA'
-- AND ...

UNION ALL

SELECT Id
FROM Table2
WHERE @Var='BB'
-- AND ...

UNION ALL

SELECT Id
FROM Table3
WHERE @Var NOT IN('AA', 'BB')
-- AND ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लूपबैक लिंक्ड सर्वर के साथ लेनदेन - लॉकिंग मुद्दे

  2. SQL सर्वर (T-SQL) में STR () फ़ंक्शन कैसे काम करता है

  3. सभी हटाएं / बल्क इंसर्ट

  4. SQL सर्वर 2008 बैकअप संपीड़न मानक संस्करण

  5. एकल तालिका स्तंभ में एकाधिक बिट मान संग्रहीत करें