Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 带有日期列的表-带有变量的转换错误_Sql Server - Fatal编程技术网

Sql server 带有日期列的表-带有变量的转换错误

Sql server 带有日期列的表-带有变量的转换错误,sql-server,Sql Server,我有一张叫做[尾巴]的桌子,看起来像这样 Duration January February .... 1 0.8782 0.735 2 37.22 0.678 3 0.544 0.47347 我需要做的是根据具体情况查找给定月份的值。到目前为止,我有(例如): 这应该相当于 从[TAILS]中选择[Duration]、[APRIL] 但我的代码会导致转换错误消息。在网上搜索解决方案后,我尝试了几种不同的方法将变量转换成这样,

我有一张叫做[尾巴]的桌子,看起来像这样

Duration  January  February ....
1         0.8782   0.735
2         37.22    0.678
3         0.544    0.47347
我需要做的是根据具体情况查找给定月份的值。到目前为止,我有(例如):

这应该相当于 从[TAILS]中选择[Duration]、[APRIL]

但我的代码会导致转换错误消息。在网上搜索解决方案后,我尝试了几种不同的方法将变量转换成这样,但毫无结果

有人能给我建议吗?我正在使用SQL Server 2014


非常感谢

您不能选择这样的列,但您可以构造一个动态sql查询,并使用
sp_executesql
执行它,如下所示:

declare @monthX Date = '20160101';
declare @sql nvarchar(max);

set @sql = 'Select [Duration], '+quotename(datename(month,@monthx))+' From [Tails];';

select @sql as sql;
exec sp_executesql @sql;
本例执行的查询为:

Select [Duration], [January] From [Tails];

rextester演示:

您不能选择这样的列,但您可以构造一个动态sql查询,并使用
sp_executesql
执行它,如下所示:

declare @monthX Date = '20160101';
declare @sql nvarchar(max);

set @sql = 'Select [Duration], '+quotename(datename(month,@monthx))+' From [Tails];';

select @sql as sql;
exec sp_executesql @sql;
本例执行的查询为:

Select [Duration], [January] From [Tails];

rextester演示:

您可以动态创建查询,然后使用执行查询:

DECLARE @monthX Datetime
DECLARE @monthS varchar(20)
SET @monthX = '04-01-2016'
SET @monthS = datename(month,@monthX)
DECLARE @SQL varchar(100)
SET @SQL = 'select [Duration], [' + @monthS + '] from [Tails];'
EXECUTE (@SQL)

您可以动态创建查询,然后使用来执行查询:

DECLARE @monthX Datetime
DECLARE @monthS varchar(20)
SET @monthX = '04-01-2016'
SET @monthS = datename(month,@monthX)
DECLARE @SQL varchar(100)
SET @SQL = 'select [Duration], [' + @monthS + '] from [Tails];'
EXECUTE (@SQL)

如果你想把整列加起来。。。使用该值(减去测试的温度数据)


如果你想把整列加起来。。。使用该值(减去测试的温度数据)


由于您正在尝试获取列名,我认为您需要使用动态SQL并执行该命令。由于您正在尝试获取列名,我认为您需要使用动态SQL并执行该命令。非常感谢谢谢,非常感谢,明白了。谢谢你是的,你明白了。非常感谢。