Я работаю над динамическим запросом SQL для хранимой процедуры MsSQL.
Существует таблица search.ProfileFields
, которая содержит фактические имена столбцов в таблице, которую мне нужно запросить.
Моя цель состоит в том, чтобы SQL выбирал конкретный столбец в таблице, динамически из его родительского запроса.
Немного смущает, вот пример:
DECLARE @sql nvarchar(max)
SELECT @sql = '
SELECT
pfs.SectionID,
pfs.SectionName,
pfs.Link,
(
SELECT
pf.FieldID,
pf.FieldTitle,
pf.FieldSQL,
pf.Restricted,
pf.Optional,
(
SELECT
pf.FieldSQL
FROM
Resources.emp.EmployeeComplete as e
WHERE
e.QID = @QID
) as Value
FROM
search.ProfileFields as pf
WHERE
pf.SectionID = pfs.SectionID
ORDER BY
pf.[Order]
FOR XML PATH (''field''), ELEMENTS, TYPE, ROOT (''fields'')
)
FROM
search.ProfileFieldSections as pfs
WHERE
pfs.Status = 1
FOR XML PATH (''data''), ELEMENTS, TYPE, ROOT (''root'')'
PRINT @sql
EXECUTE sp_executesql @sql, N'@QID varchar(10)', @QID = @QID
Во внутреннем большинстве select
. Я запрашиваю pf.FieldSQL
. Я ищу фактическое значение, которое было получено родителем select
.
search.ProfileFields
имеет столбец с именем FieldSQL
с несколькими результатами, такими как Name
, Age
, Location
.
Это то, что я пытаюсь сделать самым внутренним select
.
SELECT Name FROM ...
- имя в этом случае происходит от значения pf.FieldSQL
.
Как мне в этом случае запросить имя динамического столбца?