0

SQLサーバーのケース内に複数のif else文を作成したいです。それは可能ですか?一例を教えてください。C# では、ケース内に複数行のステートメントを記述できます。

C#スイッチケースのようなSQL Serverで可能ですか。

ケースループに以下のコードを入れたい

IF @SegmentId > 0 and @AttributeName IS NOT NULL   
begin
  select AttributeID,Attribute_key from AttributeMaster 
  where AttributeTypeId =@AttributeType and SegmentId=@SegmentId 
  and Attribute_key   like '%'+@AttributeName+'%' order by AttributeID
end

else IF @SegmentId = 0 and NULLIF(@AttributeName, '') IS NULL   
begin
  select AttributeID,Attribute_key from AttributeMaster 
  where AttributeTypeId =@AttributeType  order by AttributeID
end

else IF @SegmentId > 0 and NULLIF(@AttributeName, '') IS NULL   
begin
  select AttributeID,Attribute_key from AttributeMaster 
  where AttributeTypeId =@AttributeType and SegmentId=@SegmentId  
  order by AttributeID
end

@AttributeTypeIdis 1 then different conditionを実装する必要があります。my@AttributeIdから1 to 5

4

2 に答える 2

2

CASETsqlとその仕組みを探している場合。

--(1) Simple case
case X when 1 then 'X is 1' 
       when 2 then 'X is 2' ...
       else 'X is not 1 or 2' end as colName

--(2) Searched case
case when X < 1 then 'X is less than 1' 
     when X = 1 then 'X is 1' ...
     else 'X is greater than 1' end as colName

私はあなたのすべてを置くことができると思いますinto a single query;

select AttributeID, Attribute_key 
       --uncomment next line if needed   
       --,case AttributeID when 1 then 'A' when 2 then 'B' ... end 
from  AttributeMaster
where AttributeTypeId =@AttributeType and 
      SegmentId= isnull(nullif(@SegmentId,0),SegmentId) and
      Attribute_key like 
           case when  @SegmentId > 0 and @AttributeName is not null 
           then '%'+@AttributeName+'%' else Attribute_key end
      --uncomment if filter needed
      --and AttributeID <6  
于 2012-12-21T14:11:17.223 に答える
1

以下のSQLクエリを使用して、質問に記載されているすべてのif/else条件を実行できます

select AttributeID,Attribute_key from AttributeMaster 
where AttributeTypeId =@AttributeType 
and (@segmentId = 0 or SegmentId=@SegmentId)
and (NULLIF(@AttributeName, '') IS NULL OR 
         Attribute_key   like '%'+@AttributeName+'%') 
order by AttributeID
于 2012-12-21T14:21:32.873 に答える