• Haven't heard back, so I thought I'd provide my updated solution:

    create table #Channels (

    ChannelDate datetime,

    SourceId int,

    ChannelId int,

    Value varchar(128));

    insert into #Channels

    values

    ('2015-11-01 16:45:59.953',1,1,'223,4923'),

    ('2015-11-01 16:46:00.127',1,2,'224,9357'), --*

    ('2015-11-01 16:46:00.327',1,3,'227,4183'), --*

    ('2015-11-01 16:46:00.527',1,4,'221,025'), --*

    ('2015-11-01 13:17:14.177',1,1,'223,0304'), --*

    ('2015-11-02 14:34:16.337',1,1,'223,1234'),

    ('2015-12-01 16:45:59.953',1,1,'323,4923'),

    ('2015-12-01 16:46:00.127',1,2,'324,9357'), --*

    ('2015-12-01 16:46:00.327',1,3,'327,4183'), --*

    ('2015-12-01 16:46:00.527',1,4,'321,025'), --*

    ('2015-12-01 13:17:14.177',1,1,'323,0304'); --*

    with basedata as (

    select

    ChannelDate,

    SourceId,

    ChannelId,

    Value,

    rn = row_number() over (partition by ChannelId,dateadd(month,datediff(month,0,ChannelDate),0) order by ChannelDate asc)

    from

    #Channels

    where

    ChannelDate >= dateadd(month,datediff(month,0,ChannelDate),0) and ChannelDate < dateadd(month,datediff(month,0,ChannelDate),1)

    )

    select

    ChannelDate,

    SourceId,

    ChannelId,

    Value

    from

    basedata

    where

    rn = 1

    order by

    ChannelDate, ChannelId;