2012-01-24 13 views
3

私は関数の中でこのような構造を持っている内部のif文:TSQL:[挿入

INSERT INTO @TheTable 
    SELECT DISTINCT 

     @Number AS Number, 

     @Name AS Name 

    FROM MYTABLE 
    WHERE id = @id 

私は、この構成に別の機能を実行した結果を追加する必要があると私はそうするためにあなたの助けを必要としています。 @Name AS名、私はどうすればTSQLにこれを翻訳することができ、この

IF (dbo.anotherFunction(@id)==1) 
@NewVisitor AS NewVisitor 
ELSE 
@NewVisitor AS NoNewVisitor 

のようなものを追加する必要があります行の下

ありがとうございます!文がSELECT文の内部で利用できない場合は、これを推測

+0

あなたの 'INSERT'は' MYTABLE'の列を参照せず、 'id'がマッチする行を取り戻し、' DISTINCT'を使ってすべてを取り除きます。 'IF EXISTS(...) 'を使ったほうがはるかに良いでしょう。 –

+1

は、@ TheTableのnewVisitorとnoNewVisitorの2つの異なる列ですか?だから2つの列のうちの1つに@newVisitorを挿入したいのですか? – Beth

+0

それは単なる例です。その構造の中でif節などのやり方を教えてください。多くのありがとう – user712027

答えて

6

は...あなたが欲しいもの

INSERT INTO @TheTable 
    SELECT DISTINCT 
     @Number AS Number, 
     @Name AS Name, 
     case when (dbo.anotherFunction(@id)=1) then @NewVisitor else null end as NewVisitor, 
     case when (dbo.anotherFunction(@id)<>1) then @NewVisitor else null end AS NoNewVisitor 
    FROM MYTABLE 
    WHERE id = @id 
+0

ありがとう、それは私が必要なものだ! – user712027

0

この質問は、(なぜすべての変数、列が何を意味するのですか?)私にはほとんど意味がありませんが、あなたは、このようにそれを行うことができます。

IF (dbo.anotherFunction(@id)==1) 
    INSERT INTO @TheTable 
    SELECT DISTINCT 
     @Number AS Number, 
     @Name AS Name, 
     @NewVisitor AS NewVisitor 
    FROM MYTABLE 
    WHERE id = @id 
ELSE 
    INSERT INTO @TheTable 
    SELECT DISTINCT 
     @Number AS Number, 
     @Name AS Name, 
     @NewVisitor AS NoNewVisitor 
    FROM MYTABLE 
    WHERE id = @id 

また2つのCASE文を使用NewVisitorとNoNewVisitorを選択します。