2012-03-25 9 views
0

に現在の日付によって動的に列名を定義し、私はこのSELECT文を持っている:は、SQL Serverの

SELECT 
    ProjectId, 
    ProjectName,    
    D3 as "three month ago", 
    D2 as "two month ago", 
    D1 as "last month", 
    F0 as "current month", 
    F1 as "next month", 
    F2 as "next two month",   
FROM 
    View_Year_Forcast 

私は現在の月に応じて、列名を指定します。

私は、(d1、d2、d3、f0 ..)のような月のシンボルを取得し、ヘブライ語で月の名前を表す文字列を返す関数get_month_nameを持っています。

問題を解決する最善の方法は何ですか?

念のために、私はSQL Serverでストアドプロシージャでこれを行うにしようとしています

+2

これをT-SQLで実行することはできません。あなたのクエリで値を返すことをお勧めします。**さらに6ヶ月ごとに綴りの月名を返します。フロントエンド(Webアプリなど)がカラム名の代わりに月名を使用して実際の表示を処理するようにしてください。 –

答えて

0

それ、動的SQLでこれを行うことが可能次のとおりです。ただし

declare @month nvarchar(50) 
declare @sql nvarchar(1000) 

set @month = 'March' -- execute your `get_month_name` function here instead 

set @sql = 'select D3 as ' + @month + ' from View_Year_Forcast' 

exec sp_executesql @sql 

、動的SQLその問題があります。詳細な説明については、The Curse and Blessings of Dynamic SQLを参照してください。

だから、何とか可能だ場合、私はむしろない使用、動的SQLだろうが、marc_s suggested in his commentのようなものです:
はそのまま、クエリを残すほかに月名を返すと、クライアントは、月の名前でを表示してみましょう正しい場所。

+0

@betiteなぜこれを答えとして選択していないのですか? –