0

このように select に if ステートメントを入れることもできますか、それともここでやろうとしていることに Case ステートメントを使用する必要がありますか? 現在、構文エラーが発生します。

Select 
    field1,
    field2,
    If( @CurrentDate = @lastDate and @CurrentWeek = @lastWeek) 
              select @CurrentWeek,
    .... rest of select statement
4

4 に答える 4

2

を使用する必要がありますCASE。ただし、 CASE は と の両方として使用できるためSWITCHIF ... THEN ... ELSEIF ... ELSE柔軟性が高いことに注意してください。

例えば:

DECLARE @flag INT
SET @flag = 1

-- Switch
SELECT CASE @flag WHEN 1 THEN 'Condition True' 
                  WHEN 0 THEN 'Condition FALSE' 
                  ELSE 'Condition Invalid' 
       END

-- If / elseif / else
SELECT CASE WHEN @flag = 1 
                 THEN 'Condition True' 
            WHEN @flag = 0 AND @@SERVERNAME = 'TotallyUnrelatedToFlag' 
                 THEN 'Condition FALSE' 
            ELSE 'Condition Invalid' 
       END

あなたの例では、次のようなものが必要なようです

Select 
    field1,
    field2,
    CASE WHEN (@CurrentDate = @lastDate and @CurrentWeek = @lastWeek) 
         THEN @CurrentWeek
         ELSE NULL
    END As field3
于 2012-10-10T14:29:39.677 に答える
1

CASE声明が欲しいらしい

Select 
    field1,
    field2,
    case when @CurrentDate = @lastDate and @CurrentWeek = @lastWeek
         then @CurrentWeek else '' end
    .... rest of select statement

IFステートメントを使用する場合は、次のようなものを使用する必要があります。

If (@CurrentDate = @lastDate and @CurrentWeek = @lastWeek)
  begin
    -- place the one select statement here
    select ...from
  end
else
  begin
     -- place the alternate select here
     select... from
  end
于 2012-10-10T14:26:00.913 に答える
1

代わりに case ステートメントを使用する必要があります。TSQLのIF...ELSE構造を使用して、SQL ステートメントを条件付きで実行できます。SQL ステートメント内では使用できません。これを明確にするドキュメントを読んでください。

于 2012-10-10T14:27:46.307 に答える
0

これを試して:

Select 
    field1,
    field2,
    CASE WHEN @CurrentDate = @lastDate and @CurrentWeek = @lastWeek THEN @CurrentWeek ELSE '' END as Week,
于 2012-10-10T14:26:31.917 に答える