Другая альтернатива ... и я ненавижу расширенные значения записей, связанные с полями, но эй, если это то, что у вас есть, пусть будет так.Я бы на самом деле настроил этот запрос, чтобы присоединиться к каждому обязательному компоненту, как вы это делали для «sub» Confirmed = 1, без проблем.Тогда я бы добавил ваше "dfmna_rsform_submission_values" ТАКЖЕ как ВНУТРЕННЕЕ СОЕДИНЕНИЕ на 'Nom-Formation' И ЗНАЧЕНИЕ, равное какому бы ни был ваш критерий.
Если представление не соответствует этому, кого это волнует, пропустите любую записьи у вас останутся только те, кто прошел предварительную квалификацию.
ТОГДА я бы сделал ОДНОЗНАЧНОЕ левое соединение с "dfmna_rsform_submission_values" после левого соединения с идентификатором представления независимо от дополнительных полей.
Применив MAX (case / when) к отдельным значениям поля, которые вы ищете, он вернет только это описание для этого представления столбца.
Выполнение Group By для представления вернет одну запись для каждого представления.
Просто альтернатива ..
SELECT
sv.SubmissionId,
max( case when sv1.FieldName IN ( 'NomEtablissement-Individuelle', 'NomEtablissement-Continue' )
then sv1.FieldValue else '' end ) Etablissement,
max( case when sv1.FieldName IN ( 'Nom-Individuelle', 'Stg-Nom-Continue' )
then sv1.FieldValue else '' end ) Nom,
max( case when sv1.FieldName IN ( 'Prenom-Individuelle', 'Stg-Prenom-Continue' )
then sv1.FieldValue else '' end ) Prenom,
max( case when sv1.FieldName IN ( 'Fonction-Individuelle', 'Stg-Fonction-Continue' )
then sv1.FieldValue else '' end ) Fonction,
max( case when sv1.FieldName IN ( 'NumAdelirpps-Individuelle', 'Stg-NumAdelirpps-Continue' )
then sv1.FieldValue else '' end ) Identification,
max( case when sv1.FieldName = 'Nom-Formation'
then sv1.FieldValue else '' end ) NomFormation,
max( '' ) Signature
FROM
dfmna_rsform_submission_values sv
INNER JOIN dfmna_rsform_submissions sub
ON sv.SubmissionId = sub.SubmissionId
AND sub.confirmed = 1
INNER JOIN dfmna_rsform_submission_values svRequired
ON sv.SubmissionId = svRequired.SubmissionId
AND svRequired.FieldName = 'Nom-Formation'
AND svRequired.FieldValue = 'my_criteria'
LEFT JOIN dfmna_rsform_submission_values sv1
ON sv.SubmissionId = sv1.SubmissionId
WHERE
sv.FormId = 4
GROUP BY
sv.SubmissionId
HAVING
max( case when sv1.FieldName IN ( 'Nom-Individuelle', 'Stg-Nom-Continue' )
then sv1.FieldValue else '' end ) <> ''
ORDER BY
max( case when sv1.FieldName IN ( 'Nom-Individuelle', 'Stg-Nom-Continue' )
then sv1.FieldValue else '' end )