0

シナリオに基づいて列のエイリアスに名前を付ける必要があります

declare @testing as varchar(max)
set @testing = 'choice'

select 1 as case when @testing = 'choice' then 'chose' else 'didntChoose' end

したがって、@testing = 'choice' の場合、結果は次のようになります。

chose
1

そうしないと:

didntChoose
1

動的 SQL なしでこれを行うことは可能ですか?

4

3 に答える 3

3

いいえ、動的 SQL を使用しない限り、値に基づいてエイリアスの名前を変更することはできません。

列を選択する場合、列ごとに 1 つの名前/エイリアスのみを指定できます。

異なる列名が必要な場合は、異なる選択ステートメントを使用する次のようなものを使用できます。

IF @testing = 'choice'
    select 1 as 'Chose'
ELSE 
    select 1 as 'didntChoose'   

または、2 つの別々の列を返すこともできます。

select 
    case when @testing = 'choice' then 1 else 0 end Chose,
    case when @testing <> 'choice' then 1 else 0 end DidNotChose
于 2013-02-25T17:07:06.790 に答える
1

これはここに残しておきますhttp://www.sommarskog.se/dynamic_sql.html#columnalias

最初にデータを一時テーブルに取得し、次にsp_renameを使用して必要に応じて列の名前を変更します。(そのデータベースで動作させるには、sp_renameをtempdbで修飾する必要があります。)

動的SQLを頻繁に扱っている場合は、彼のサイトを読んでください。注意しないと、足を踏み入れる方法がたくさんあります...

于 2013-02-25T17:10:37.493 に答える