根据SQL Server中另一个表中的行动态选择列名

时间:2018-09-13 10:28:54

标签: sql sql-server stored-procedures

我需要提出以下情况。我需要一个.DATE_TIME字段来在括号中找到正确的列名称。因为每一天都有列,所以我需要根据SHIFT_TABLE计算日期。列名以'TPR'加上日期开头,例如TPR13

DECLARE @SQLText NVARCHAR(MAX) = ''
SELECT  @SQLText += 'SELECT (SELECT '
SELECT  @SQLText += ( 'TPR' +  Convert(varchar,DATEPART(day,a.DATE_TIME) )
        ) +
        ' from SHIFT_TABLE as s Where s.id = a.id ) from MAIN_TABLE as a where a.id=''1'' and a.ay=''12'' and a.yil=''2018''  '

print @SQLText

我收到错误消息:不能绑定多部分标识符“ a.DATE_TIME”。

SHIFT_TABLE出现ID和TPR01,TPR02,... TPR31列 MAIN_TABLE出现id,ay,yil和DATE_TIME列

我必须从a.DATE_TIME开始计算一天。

因此,我尝试达到这样的结果,即从MAIN_TABLE中将SELECT(从SHIFT_TABLE选择SELECT TPR13作为s,其中s.id = a.id)作为其中a.id ='1'和a.ay = '12'和a.yil ='2018'

我该如何解决?非常感谢,

1 个答案:

答案 0 :(得分:0)

DECLARE @SQLText NVARCHAR(MAX) = ''
SELECT  @SQLText += 'SELECT (SELECT '
SELECT  @SQLText += ( 'TPR' +  Convert(varchar,DATEPART(day,a.DATE_TIME) )
    ) +
    ' from SHIFT_TABLE as s Where s.id = a.id ) from MAIN_TABLE as a where a.id=''1'' and a.ay=''12'' and a.yil=''2018''  '
FROM [YourTableWhere_DATE_TIME_Exists] AS a
print @SQLText