查询以检索特定月份的数据

时间:2017-11-10 07:07:15

标签: sql sql-server tsql

我有一个表,每个月有12列。列名如Jan,Feb,Mar,Apr等。现在我想写一个查询,我将在其中传递日期或月份,作为回报,它应该只显示获得该月份列。

2 个答案:

答案 0 :(得分:0)

试试这个:

DECLARE @CurrentMonth VARCHAR(12) = 'Januari';

DECLARE @DynamicTSQLStatement NVARCHAR(MAX) = N'SELECT [' + @CurrentMonth + '] FROM [dbo].[Mytable];';

exec sp_executesql @DynamicTSQLStatement

您需要使用动态T-SQL语句。注意,如果要将它包装在例程中,则它应该是存储过程,因为您无法在函数中执行dynamic T-SQL(例如,除了使用SQL CLR之外)。

答案 1 :(得分:0)

DECLARE @CurrentMonth VARCHAR(30) = '2017-11-10 11:57:18.970';

DECLARE @DynamicTSQLStatement NVARCHAR(MAX);

 SET @DynamicTSQLStatement=N'SELECT [' +
    CASE WHEN isdate(@CurrentMonth)=1  then DATENAME(MONTH,@CurrentMonth) 
                ELSE @CurrentMonth END + '] FROM [dbo].[Mytable];';

exec sp_executesql @DynamicTSQLStatement