declare @ownerId int = ; declare @ownerType varchar(3) = ; declare @channel varchar(50) = ; with defaultValues as ( select channel, labelName, textSingular textSingular_default, textPlural textPlural_default, abbrevSingular abbrevSingular_default, abbrevPlural abbrevPlural_default from tbl_SYS_Labels b with (nolock) where channel = @channel and ownerId = 0 and ownerType = '*' ), clientValues as ( select labelName, textSingular, textPlural, abbrevSingular, abbrevPlural from tbl_SYS_Labels b with (nolock) where channel = @channel and ownerId = @ownerId and ownerType = @ownerType ), labels as ( select dv.*, cast( case when cv.labelName is not null then 1 else 0 end as bit ) as clientOverride, cv.textSingular, cv.textPlural, cv.abbrevSingular, cv.abbrevPlural from defaultValues dv left outer join clientValues cv on cv.labelName = dv.labelName ) select * from labels order by labelName for json auto, include_null_values