Je travaille avec une base de données héritée dont la table contient des noms de champs provenant d'autres tables.Utilisation de la valeur de colonne en tant que nom de colonne dans la sous-requête
J'ai donc cette structure:
Field_ID | Field_Name
*********************
1 | Col1
2 | Col2
3 | Col3
4 | Col4
et je dois tirer une liste de ces métadonnées sur le terrain ainsi que les valeurs de ce champ pour un utilisateur donné. Donc, j'ai besoin:
Field_ID | Field_Name | Value
1 | Col1 | ValueOfCol1onADiffTable
2 | Col2 | ValueOfCol2onADiffTable
3 | Col3 | ValueOfCol3onADiffTable
4 | Col4 | ValueOfCol4onADiffTable
Je voudrais utiliser le Field_Name dans une sous-requête pour tirer cette valeur, mais ne peut pas comprendre comment obtenir SQL pour évaluer Field_Name
comme une colonne dans la sous-requête.
donc quelque chose comme ceci:
select
Field_ID
,Field_Name
,(SELECT f.Field_Name from tblUsers u
where u.User_ID = @userId) as value
from
dbo.tblFields f
Mais qui vient retourne Field_Name
dans la colonne des valeurs, pas la valeur de celui-ci.
Ai-je besoin de mettre la sous-requête dans une fonction séparée et d'évaluer cela? Ou une sorte de SQL dynamique?
Une table a _columns_, non _fields_. – jarlh
EXECUTE IMMEDIATE ou similaire selon votre SGBDR – Randy
@jarlh - compris. Je n'ai pas écrit le schéma d'origine et je n'ai pas la possibilité de le changer. Les noms des colonnes dans ce cas sont Field_Name, etc –