Selecting only columns where sum(column) > 0
This solution gives you your "Alternate Solution" answer.  The only way to achieve what you are looking for as a primary solution would be a dynamic pivot operation on the result set after you have unpivoted it.  This solution does require maintenance but is straightforward and no function is required. 

Sample data:

DECLARE @Names TABLE
    (
      DateValue DATE NOT NULL
    , Bob INT NOT NULL
    , Joe INT NOT NULL
    , Will INT NOT NULL
    );

DECLARE @MinDate DATE = '1/1/2015';
DECLARE @MaxDate DATE = '1/3/2015';
DECLARE @MinValue INT = 1;

INSERT  INTO @Names
        ( DateValue, Bob, Joe, Will )
VALUES  ( '1/1/2015', 1, 0, 1 )
        , ( '1/2/2015', 0, 0, 1 )
        , ( '1/3/2015', 0, 0, 0 )
        , ( '1/4/2015', 1, 1, 1 );


Query:    

WITH    CTE_Unpivot
          AS ( SELECT   DateValue
                      , ScoreName
                      , Scores
               FROM     ( SELECT    DateValue
                                    , Bob
                                    , Joe
                                    , Will
                          FROM      @Names
                        ) AS cp 
               UNPIVOT  ( Scores FOR ScoreName IN ( Bob, Joe, Will ) ) AS up
             )
    SELECT  ScoreName
          , SUM(Scores) AS ScoreTotal
    FROM    CTE_Unpivot
    WHERE   DateValue BETWEEN @MinDate AND @MaxDate
    GROUP BY ScoreName
    HAVING  SUM(Scores) &gt;= @MinValue;


Edit:
Ideally, you wouldn't have the table stored like that, it looks like it was copied from an Excel spreadsheet.  You would have a table with three columns, date, name and value, then query based on that.