CASE
論理フロー制御には使用されません... IF
を使用します / ELSE IF
代わりに:
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
覚えておいてください... SELECT *
を使用しているため 、および @TypeOfDayID
に基づく別のテーブルへの結合 、最終的にギザギザの結果セットになる可能性があります。つまり、どの分岐が行われるかによって列の数が異なります。
これをプログラムで操作するのは面倒なので、 SELECT *
を避けることをお勧めします。 この理由だけでなく、他の理由から...