2016-04-26 14 views
4

毎月販売担当者の手数料を取得しています。私は私がでクエリを実行し、月に応じて、列名の変更を加える必要があります。私は30/1/2016にクエリを実行するときのようなクエリの日付(月)に応じて列名を変更します

その後、coumn名はcommission for month 1か、私が実行したときのような

commission for month Januaryです

Select T0.commission as 'Commission for month month(getdate())' 

それは

仕事doesntの:30/3/2016でのクエリは、coumn名が、私はこのコードを試してみました commission for month 3commission for month March

です

+2

このクエリをお試しください。個人的に私はこのような構造は好きではありませんが、私はあなたがこのセットアップに悩まされていると推測しています。 – HoneyBadger

+1

与えられたクエリは、常に固定の形状を持つ結果セットを生成します - 数値、*名前*このようなプレゼンテーションロジック(プレゼンテーションのフロントエンドやアプリケーションなど)を扱うためのより良い場所はありませんか? –

+0

また、文字列に式のように見えるものが含まれていて、その式を評価し、そのように得られた値で置き換えると、実際にこのことが行われた場合、SQL Serverでプログラムを作成するのがどのくらい混乱しているのか想像してください。 –

答えて

3

このクエリは、いくつかのダミーデータ(システムビューからテーブル名を返します。列は動的に生成された文字列で指定されます。

DECLARE @cmd VARCHAR(MAX)='SELECT TABLE_NAME AS [' + 'placeYourColHere_' + CAST(MONTH(GETDATE()) AS VARCHAR(10)) + '] FROM INFORMATION_SCHEMA.TABLES;'; 
EXEC(@cmd); 
1

私はあなたが動的にそれをしなければならないと思う

select 'Commission for month ' + CONVERT(NVARCHAR(2),DATEPART(MM,GETDATE())) AS 'Date' 
+0

素晴らしい考え、upvoteの価値がある...しかし、私たちは、OPのクエリが返す行の数を知りませんし、これを何度も何度も繰り返すことは解決策ではないかもしれません... – Shnugo

+0

あなたのコードは正常に動作します。列データではなく列として –

関連する問題