繁体   English   中英

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

[英]Select column name dynamically based on rows from another table in SQL server

我需要做以下情况。 我需要一个.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'

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM