sql >> Database >  >> RDS >> Sqlserver

Case-instructie in SQL-query

CASE wordt niet gebruikt voor logische flow control... gebruik IF / ELSE IF in plaats daarvan:

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

Onthoud... aangezien je SELECT * . gebruikt , en deelnemen aan een andere tabel op basis van @TypeOfDayID , zult u waarschijnlijk eindigen met een gekartelde resultatenset, wat betekent dat u een variërend aantal kolommen zult hebben op basis van welke vertakking wordt genomen.

Dit kan lastig zijn om programmatisch mee te werken, dus het is een goed idee om SELECT * te vermijden om deze reden, evenals om andere redenen...



  1. Waar worden Postgres-databasebestanden opgeslagen in ubuntu?

  2. Sharding en ID-generatie als instagram

  3. Wat is het bereik van SET IDENTITY_INSERT xyz ON?

  4. postgres:Wat doet de query 'select * from user' eigenlijk?