• My guess is 2 (value, defaultValue) ** 3 (number of rows) = 8

    select [@YY],[@XX],[@ID]

    from

    (select v as [@ID]

    from #Param

    cross apply(values (value),(DefaultValue) ) t(v)

    where Name ='@ID') _1,

    (select v as [@XX]

    from #Param

    cross apply(values (value),(DefaultValue) ) t(v)

    where Name ='@XX') _2,

    (select v as [@YY]

    from #Param

    cross apply(values (value),(nullif(DefaultValue,'1')) ) t(v)

    where Name ='@YY') _3;