Ищете способ заменить имя таблицы в запросе объявлением переменной - PullRequest
0 голосов
/ 11 июня 2019

Хотелось бы узнать, возможно ли заменить одно из имен таблицы DCI_ARD , объявив переменную в заголовке для следующего запроса.

Пробовал несколько способов, но проблема, с которой я сталкиваюсь, заключается в том, что у меня есть несколько 'в одном запросе, и это разрывает объявление.

есть. CONCAT ( '(', M.ManufacturerID, ')',

т. STRING_AGG (CategoryID, ',') как CategoryID

SELECT * FROM (

    SELECT [id]
          ,[brandaaiaid]
          ,M.ManufacturerID
          ,CONCAT('(',M.ManufacturerID,')',exppartno) AS TempManufacturerSKU
          ,[company]
          ,[fromyear]
          ,[toyear]
          ,[makename]
          ,[modelname]
          ,[submodelname]
          ,[engbase]
          ,[partterminologyname]
          ,[position]
          ,[exppartno]
          ,[mfrlabel]
      FROM DCI_ARD AS DS
      LEFT JOIN [dbo].[Manufacturer] AS M ON DS.brandaaiaid = M.AAIAID

      ) AS T

      LEFT JOIN [dbo].[ProductVariant] AS PV ON T.TempManufacturerSKU = PV.ManufacturerPartNumber
      LEFT JOIN 
      (select ProductId, STRING_AGG(CategoryID, ',') as CategoryID
    from productCategory
    GROUP BY ProductId) as PC ON PV.ProductID = PC.ProductID ORDER BY id ASC

1 Ответ

0 голосов
/ 11 июня 2019

Пробовал несколько способов, но проблема, с которой я сталкиваюсь, заключается в том, что у меня есть несколько 'в одном запросе, и это разрывает объявление.

Исходя из этого, я предполагаючто вы пытаетесь создать строку и использовать sp_executesql, и в этом случае любые одиночные кавычки, которые появляются в SQL, нужно будет экранировать, удваивая их.Например, если вы хотите запустить это:

SELECT CONCAT('(','Test',')') FROM MyTable

Использование sp_executesql:

DECLARE @SQLString nvarchar(max) = 'SELECT CONCAT(''('',''Test'','')'') FROM MyTable'

EXEC sp_executesql @SQLString
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...