با سلام و خسته نباشید
من یک کوئری نوشتم به صورت زیر اما وقتی اجرا میکنم این خطا رو میده
Conversion failed when converting the nvarchar value 'HAVING RowNumber BETWEEN(' to data type int.
چطوری باید درستش کنم
باتشکر
کد:
declare @strSql nvarchar(max) set @strSql = N' WITH cteSearches(Active,Levels,codeg,father,name,GroupLevels) AS ( SELECT '+ @BankName + 'G.Active ,'+ @BankName + 'G.Levels ,'+ @BankName + 'G.codeg ,'+ @BankName + 'G.father ,'+ @BankName + 'G.name ,1 AS GroupLevels FROM '+ @BankName + 'G Where '+ @BankName + 'G.father='+ @Father + ' And '+ @BankName + 'G.lang='+ @Lang +' And '+ @BankName + 'G.Sub=' + @Sub +' '+ @SearchCondition + ' ) SELECT ROW_NUMBER() OVER ( ORDER BY ct.codeg ASC )AS RowNumber '+ @RowNumberCondition + ' COUNT(EPage_1.father) AS noP, ct.Active, --count('+ @BankName + '.codeg) AS noV, '+ @noVCondition + ', ct.Levels, ct.codeg, ct.father, ct.name '+ @CodeArchiveCondition + ' '+ @OldnoVCondition + ' FROM cteSearches as ct left outer join '+ @BankName + ' ON ct.codeg='+ @BankName + '.codeg '+ @PersonalSiteCondition + ' '+ @joinCondition + ' LEFT OUTER JOIN '+ @BankName + 'G EPage_1 ON ct.codeG = EPage_1.father where 1=1 '+ @CheckAcces + ' '+ @whereCondition + ' '+ @SearchNameCondition + ' '+ @AccesCondition + ' '+ @SearchNameCondition + ' group by ct.Active,ct.Levels,ct.codeg,ct.father,ct.name,ct.GroupLevels'+ @GroupByCondition + ' '+ @hasArchiveCondition + ' HAVING RowNumber BETWEEN('+@PageIndex+' -1) * '+@PageSize+' + 1 AND((('+@PageIndex+' -1) * '+@PageSize+' + 1) + '+@PageSize+') - 1'' select '+@RecordCount+' = count(*) from ct option (maxrecursion 0)' exec (@strSql)
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)