Skip to content Skip to sidebar Skip to footer

Return A Value If No Rows Match

The [authorityID] (TinyInt) column will never be null. What I want is to return a 15 if there are no rows. With the query below I get nothing if there are no rows: select top

Solution 1:

SELECT  authorityId = isnull(( SELECT   [authorityID]
                               FROM     [docAuthority] WITH ( NOLOCK )
                               WHERE    [grpID] = 0
                                        AND [sID] = 42
                             ), 15)

Solution 2:

As you noted, if the query returns no rows, there's nothing to apply the isnull on. One dirty trick is to use union all and (ab)use the top construct:

SELECT TOP 1 authorityID
FROM   (SELECT authorityID
        FROM   [docAuthority] WITH (nolock) 
        WHERE  [grpID] = 0 AND [sID] = 42
        UNION ALL
        SELECT 15) t

Post a Comment for "Return A Value If No Rows Match"