sql >> Databasteknik >  >> RDS >> Sqlserver

Falluttalande i SQL Query

CASE används inte för logisk flödeskontroll... använd IF / ELSE IF istället:

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

Kom ihåg... eftersom du använder SELECT * , och gå med i en annan tabell baserat på @TypeOfDayID , kommer du sannolikt att få en ojämn resultatuppsättning, vilket innebär att du har ett varierande antal kolumner beroende på vilken gren som tas.

Detta kan vara jobbigt att arbeta med programmatiskt, så det skulle vara en bra idé att undvika SELECT * av denna anledning, såväl som andra skäl...



  1. Hur ska jag tolka Välj Distinct aliasRefForMe.field1 From [email protected] aliasRefForMe

  2. JQuery Polling med MySQL och PHP. Hur?

  3. Flerkolumn Pivot SQL Server

  4. En introduktion till MySQL-distribution med en Ansible-roll