• Try this...I have assumed that @PToDate and @PFromDate are parameters set within SSRS. If so then they cannot be set within the query text.

    Workaround : create two additional TSQL variables called @PFromDateInside and @PToDateInside. Set these initially to the parameter values then increment these variables within the WHILE.

    Create table #SampleData(Prodid nvarchar(35), model nvarchar(35), Trandate datetime)

    Go

    Insert into #SampleData

    Select 'TRC003328042','DRDRZR2BLK','2013-08-31 04:30:33.000' union all---Saturday

    Select 'TRC003327670','DRDRZR2BLK','2013-08-31 02:40:23.000'union all---Saturday

    Select 'TRC003327822','DROIDRZR','2013-08-31 05:17:28.000'union all---Saturday

    Select 'TRC003328342','DROIDRZR','2013-08-31 08:10:27.000'union all---Saturday

    Select 'TRC003328387','DROIDRZR','2013-08-31 09:22:01.000'union all---Saturday

    Select 'TRC003322836','DRDRZRHDBLK','2013-08-30 23:40:19.000'union all---Saturday

    Select 'TRC003326586','DROIDBIO2','2013-08-31 05:50:47.000'union all---Saturday

    Select 'TRC003325460','DROIDBIO2','2013-08-30 22:36:50.000'union all---Saturday

    Select 'TRC003328994','DRDRZR2WHT','2013-09-02 04:33:44.000'union all-- Monday

    Select 'TRC003328998','DRDRZR2WHT','2013-09-02 06:37:13.000'-- Monday

    --Created SSRS Parameter

    Declare @FromDate datetime, @ToDate datetime, @rowcount int,

    @Fromtime nvarchar(6), @Totime nvarchar(6) ,@timezoneOffset int

    set @FromDate='9/2/2013' --Monday

    set @ToDate='9/3/2013'

    Set @Fromtime='6:00 AM'

    Set @Totime='6:00 AM'

    set @timezoneOffset=8

    set @rowcount=0

    /***** Assume this is being performed in SSRS

    @PFromDate=Parameters!FromDate.Value &" "&Parameters!FromTime.Value

    @PToDate=Parameters!ToDate.Value &" "&Parameters!ToTime.Value

    *****/

    DECLARE @PFromDateInside datetime

    DECLARE @PToDateInside datetime

    SET @PFromDateInside = @PFromDate

    SET @PToDateInside = @PToDate

    --Text Query expression

    IF OBJECT_ID('tempdb..#Temp') IS NOT NULL

    DROP TABLE [dbo].[#Temp]

    Create table #Temp (Prodid nvarchar(35), model nvarchar(35), Trandate datetime)

    While (1=1)

    BEGIN

    Insert into #Temp(Prodid,model,Trandate)

    select Prodid, model, Trandate from #SampleData

    Where

    DATEADD(HOUR,convert(int,@timezoneOffset), Trandate)

    BETWEEN DATEADD(DAY,0,@PFromDateInside) AND DATEADD(DAY,0,@PToDateInside)

    IF @ROWCOUNT < 0

    BEGIN

    --got an error from this portion

    SET @PFromDateInside=@PFromDateInside -1

    SET @PToDateInside=@PToDateInside-1

    END

    ELSE

    BREAK

    END

    --Query validation to get the final result set

    With CTE AS

    (

    select * from #Temp

    )

    SELECT * from CTE