declare @ownerId int = ; declare @ownerType varchar(3) = ; declare @formId int = ; select fieldDomain from tbl_WRK_Forms with (nolock) where ownerId = @ownerId and ownerType = @ownerType and formId = @formId declare @ownerId int = ; declare @ownertype varchar(3) = ; declare @formId int = ; with fieldSetFields as ( select f.name, f.type, f.label, f.sortRank, f.fieldId, fsf.fieldSetId, fsf.ownerId, fsf.ownerType from tbl_WRK_FormFieldSetFields fsf with (nolock) inner join tbl_#_domain#_Fields f with (nolock) on f.fieldId = fsf.fieldId and f.ownerId = f.ownerId and f.ownerType = fsf.ownerType where fsf.ownerId = @ownerId and fsf.ownerType = @ownerType ), fieldSets as ( select fs.ownerId, fs.ownerType, fs.fieldSetId, fs.fieldSetName, fs.fieldSetRank, fs.controlField, fs.controlFieldValue from tbl_WRK_FormFieldSets fs with (nolock) where fs.ownerId = @ownerId and fs.ownerType = @ownerType and fs.formId = @formId ), data as ( select fs.fieldSetName, fs.fieldSetId, fs.fieldSetRank, fs.controlField, fs.controlFieldValue, ( select fsf.type, fsf.label, fsf.sortRank, fsf.fieldId, fsf.name from fieldSetFields fsf with (nolock) where fsf.ownerId = fs.ownerId and fsf.ownerType = fs.ownerType and fsf.fieldSetId = fs.fieldSetId order by fsf.sortRank for json auto, include_null_values ) as fields from fieldSets fs ) #forJSON( 'data', attributes.datastore, 'fieldSetRank' )#