Я пытаюсь сравнить имена столбцов, которые существуют как часть значений столбцов в tblFactorDefinition
, с соответствующими именами столбцов с фактическими значениями в tblConstituent
, чтобы найти несоответствие между этими двумя таблицами.
Я не получаю ожидаемый результат, хотя расхождение действительно существует.Я публикую нижеприведенную схему БД и примеры данных с ожидаемым выводом:
Ниже приведены три таблицы tblFactorDefinition
, tblConstituent
и tblFamily
:
FamilyID | FieldName | FactorDefinition | PropertyTypeID
---------+------------+--------------------+----------------
10216 | Factor1 | 901 | 300
10216 | Factor2 | 901 | 305
10216 | Factor3 | 901 | 310
ConstituentID | FamilyID | ListingID | Factor1 | Factor2 | Factor3 | Factor9
--------------+----------+------------+---------+---------+---------+---------
1101 | 10216 | 1 | 0.1 | NULL | 0.5 | 1.0
1105 | 10216 | 2 | 0.1 | 0.3 | 0.5 | 1.0
1108 | 10216 | 5 | 0.45 | 0.42 | NULL | 1.0
FamilyID | OpenDate
---------+------------
10216 | 2016-05-16
Здесь показан ожидаемый результатниже:
FamilyID | FieldName | ConstituentID
----------+--------------+---------------
10216 | Factor2 | 1101
10216 | Factor3 | 1108
Это запрос, и я не понимаю правильную логику, следовательно, он ничего не возвращает.
SELECT
T.FamilyID,
C.COLUMN_NAME,
T.ConstituentID
FROM
SolaDBServer..tblConstituent T
INNER JOIN
INFORMATION_SCHEMA.COLUMNS C ON T.FamilyID = C.COLUMN_NAME
AND C.TABLE_NAME = 'tblFactorDefinition'
AND T.FamilyID = 10216
LEFT OUTER JOIN
SolaDBServer..tblConstituent tc ON tc.FamilyID = T.FamilyID
INNER JOIN
SolaDBServer..tblFamily tf ON tf.FamilyID = tc.FamilyID
AND tf.OpenDate = CAST(GETDATE() AS DATE)
WHERE
C.COLUMN_NAME = 'FieldName'
Любая помощь приветствуется с этим?
Спасибо.