Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tuyên bố trường hợp trong truy vấn SQL

CASE không được sử dụng để điều khiển luồng logic ... hãy sử dụng IF / ELSE IF thay vào đó:

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

Hãy ghi nhớ ... vì bạn đang sử dụng SELECT * và tham gia vào một bảng khác dựa trên @TypeOfDayID , bạn sẽ có thể kết thúc với một tập hợp kết quả lởm chởm, có nghĩa là bạn sẽ có một số cột khác nhau dựa trên nhánh nào được lấy.

Điều này có thể gây khó khăn khi làm việc với chương trình, vì vậy bạn nên tránh SELECT * vì lý do này, cũng như lý do khác ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chạy gói SSIS trong SqlServer 2012 bằng vs2010?

  2. Truy vấn được tham số hóa ..... yêu cầu tham số '@units', không được cung cấp

  3. Kết nối với SQL Server 2008 từ Java

  4. DATETIME2FROMPARTS () Ví dụ trong SQL Server (T-SQL)

  5. Quyền sao lưu