sql >> Database teknologi >  >> RDS >> Sqlserver

Sagsudsagn i SQL Query

CASE bruges ikke til logisk flowkontrol... brug IF / ELSE IF i stedet:

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

Husk... da du bruger SELECT * , og slutte sig til en anden tabel baseret på @TypeOfDayID , vil du sandsynligvis ende med et forrevne resultatsæt, hvilket betyder, at du vil have et varierende antal kolonner baseret på, hvilken gren der tages.

Dette kan være besværligt at arbejde med programmatisk, så det ville være en god idé at undgå SELECT * af denne grund, såvel som andre grunde...



  1. MySQL kopidatabase

  2. SQLite-data til en RecyclerView

  3. MySQL-mysterium:Null-værdien er ikke forskellig fra en ikke-null-streng

  4. Slet alle data i SQL Server-databasen