Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

TSQL Pilih dari Tabel Berbeda berdasarkan nilai KASUS

Menggunakan IF (cara yang benar)

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

Cara lain (Anda harus menghindari tetapi saya akan memposting untuk referensi)

Menggunakan SQL Dinamis

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)

Menggunakan 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. Mendapatkan hasil SQL dinamis menjadi variabel untuk sql-server

  2. Tetapkan Pasangan Kunci/Nilai dalam Konteks Sesi di SQL Server (sp_set_session_context)

  3. Fungsi SQLCLR dan System.Runtime.Serialization Di GAC

  4. Cara menampilkan gambar dari sql server di ms access

  5. SQL Server:apakah NEWID() selalu memberikan ID unik?