ahmed_sa Ответов: 1

Псевдоним столбца не работает при выполнении запроса ?


я работаю на SQL server 2012
моя проблема заключается в том, что псевдоним столбца в динамическом SQL-запросе не работает
так как же решить проблему
вопрос по этой линии
предположим, что имя столбца-жизненный цикл
это означает, что @columndate будет lifecycleDate
на принтере покажите что
но после этого при использовании @columndate на запрос .
псевдоним не работает и все еще печатает имя столбца
CONVERT(VARCHAR,' + @columnname + 'Date ,111)AS ' + @columnnameDate + '

я ожидаю, что буду таким же жизненным циклом.
но он все равно отображается как жизненный цикл
Как решить эту проблему
смотрите здесь Образец
PartNumber	CompanyName	DocumentID	FlowStatus	TeamName	OnlineUrl	OfflineUrl	LifecycleDate
PartNumber	CompanyName	DocumentID	FlowStatus	TeamName	OnlineUrl	OfflineUrl	Lifecycle
BCM5338MIQMG	Broadcom Inc.	29858	Done	LifeCycle	N/A	https://source.z2data.com/2017/9/24/8/11/36/125/70073643/broadcom_eol002010_03232016_eol.pdf	3/25/2020

жизненный цикл на второй линии мне это нужно lifecycleDate
но это отображение жизненного цикла

Что я уже пробовал:

DECLARE @columnname NVARCHAR(100)
DECLARE @columnnameDate NVARCHAR(100)
SET @columnname = (SELECT TOP 1 ColumnName FROM pcn.Teams t inner join #TempPC temp on t.TeamID= temp.TeamId)
SET @columnnameDate =@columnname + 'Date'
PRINT @columnname
PRINT @columnnameDate




DECLARE @header nvarchar(max)
SET @header='SELECT ''PartNumber'' as PartNumber,''CompanyName'' as CompanyName,''DocumentID'' AS DocumentID,''FlowStatus'' AS FlowStatus,''TeamName'' as TeamName,''OnlineUrl'' as OnlineUrl,''OfflineUrl'' as OfflineUrl,''' + replace(@columnname,',',''',''') + ''' AS ' +@columnname + 'Date
'


DECLARE @query nvarchar(max)
SET @query='
SELECT P.PartNumber,c.CompanyName,CAST(dpt.documentID AS NVARCHAR(20)) AS DocumentID,fs.FlowStatus,temp.TeamName,temp.OnlineUrl,temp.OfflineUrl ,CONVERT(VARCHAR,' + @columnname + 'Date ,111)AS ' + @columnnameDate + '
FROM pcn.DocumentPartTeams dpt with(nolock)
inner join #TempPC temp on dpt.documentID = temp.documentID
inner join parts.Nop_Part p with(nolock) on p.PartID=dpt.PartID
inner join Z2DataCompanyManagement.CompanyManagers.Company c with(nolock) on c.CompanyID=p.CompanyID
INNER JOIN pcn.documentteams dt with(nolock) on dpt.DocumentID=dt.DocumentID AND dt.teamid=temp.TeamId

inner join [Parts].[FlowStatus] FS with(nolock) on dpt.' + @columnname + '=fs.FlowStatusID
'
EXEC (@header + 'UNION ALL' + @query)

CHill60

Можете ли вы быть более конкретным (например, использовать отработанный пример) - когда я запускаю ваш код, у меня не возникает проблем

1 Ответов

Рейтинг:
6

Richard Deeming

Цитата:
SET @header = 'SELECT ''PartNumber'' As PartNumber, ''CompanyName'' As CompanyName, ''DocumentID'' As DocumentID, ''FlowStatus'' As FlowStatus, ''TeamName'' As TeamName, ''OnlineUrl'' As OnlineUrl, ''OfflineUrl'' As OfflineUrl, ''' + Replace(@columnname, ',', ''',''') + ''' As ' + @columnname + 'Date
';
Ваша строка заголовка добавляет Date к имени столбца, но не к значению столбца.
SET @header = 'SELECT ... As OfflineUrl, ''' + Replace(@columnname, ',', ''',''') + 'Date'' As ' + @columnname + 'Date
';


Maciej Los

5ed!