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

Pernyataan Kasus dalam SQL Query

CASE tidak digunakan untuk kontrol aliran logis... gunakan IF / ELSE IF sebagai gantinya:

declare @TypeofDayID int
set @TypeofDayID = (Select TypeofDayID from RepInfo where RepInfoID = @RepInfoID)

IF @TypeofDayID = 1 
  Select * 
  from RepInfo RD inner join SellingInfo S on S.RepInfoID = @RepInfoID
ELSE IF @TypeofDayID = 2
  Select * 
  from RepInfo RD inner join UpgradingInfo U on U.RepInfoID = @RepDailyID
ELSE IF @TypeofDayID = 9 or @TypeofDayID = 10
  Select * 
  from RepInfo RD inner join DeliveryInfo D on D.RepDailyID = @RepDailyID

Perlu diingat... karena Anda menggunakan SELECT * , dan bergabung ke tabel yang berbeda berdasarkan @TypeOfDayID , Anda mungkin akan mendapatkan kumpulan hasil yang bergerigi, artinya Anda akan memiliki jumlah kolom yang bervariasi berdasarkan cabang mana yang diambil.

Ini bisa sulit untuk dikerjakan secara terprogram, jadi sebaiknya hindari SELECT * untuk alasan ini, serta alasan lainnya...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan Gambar ke dalam Bidang Gambar SQL Server 2005 hanya menggunakan SQL

  2. Catat perubahan catatan di server SQL dalam tabel audit

  3. Cara mendapatkan bagian waktu dari SQL Server 2005 datetime dalam format 'HH:mm tt'

  4. Cara Mengganti Nama Kunci JSON di SQL Server (T-SQL)

  5. Ubah CTE SELECT ke nilai tabel fungsi yang ditentukan pengguna