에러메세지


메시지 8115, 수준 16, 상태 2, 프로시저 {{sp명}}, 줄 501

expression을(를) 데이터 형식 datetime(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.


1. 유발 쿼리


ORDER BY 
 ( CASE @orderDirection WHEN 'ASC' THEN 
    ( CASE @orderTarget
      WHEN 'Date' THEN date
      WHEN 'Price' THEN price
      WHEN 'Area' THEN area
      WHEN 'Evaluation' THEN evaluation
      END )
  END ) ASC ,
( CASE @orderDirection WHEN 'DESC' THEN 
   ( CASE @orderTarget
     WHEN 'Date' THEN date
     WHEN 'Price' THEN price
     WHEN 'Area' THEN area
     WHEN 'Evaluation' THEN evaluation
     END )
  END ) DESC


관련 포스팅

참조 : https://goo.gl/rehX3U


저작자 표시
신고
블로그 이미지

건빵쥔광이씨

.net, 하이브리드앱, sql, jquery, angularjs 등을 주제로 개발 노하우와 팁등을 포스팅 합니다.

Sql 2008 R2 기준으로 작성된 쿼리 입니다. 상위 버전에서는 훨씬 간단하게 페이징과 정렬을 구현할 수 있으니 자세한 사항은 msdn 참조 바랍니다.


1. 테스트를 위한 임시테이블 생성 해줍니다. 
 

DECLARE @page           INT = 1
DECLARE @offset         INT = 5     

    CREATE TABLE #TEMP_INTEREST_ITEM

    (

        [no] [int] identity (1,1),

        [itemNo] [varchar](14) NULL,

        [itemType] [char](2) NULL,

        [itemOriginalNo] [int] NULL,

        [itemOriginalType] [varchar] (100) NULL,

        [imagePath] [varchar] (4000) NULL,

        [detailPath] [varchar] (4000) NULL,

        [priceText] [varchar] (100) NULL,

        [price] [money] NULL,

        [dealType] [varchar] (100) NULL,

        [dong] [varchar] (50) NULL,

        [complexName] [varchar] (100) NULL,

        [roomCount] [int] NULL,

        [areaText] [varchar] (100) NULL,        

        [area] [decimal] NULL,

        [evaluation] [decimal] NULL,

        [etc] [varchar] (4000) NULL,

        [date] [char](10) NULL,

        [registDate] [datetime] NULL

    )   


2. 쿼리 부분입니다. 


SELECT [rowNum], [no], [itemNo], [itemType], [itemOriginalNo], [itemOriginalType], [imagePath], [detailPath], [priceText], [price], [dealType], [dong], [complexName], [roomCount], [areaText], [area], [evaluation], [etc], [date], [registDate]

         , @itemTotalCount AS totalCount 

    FROM (

        SELECT ( CASE 

                    WHEN @orderDirection = 'ASC' AND @orderTarget = 'Date' THEN ROW_NUMBER() OVER (ORDER BY [date])

                    WHEN @orderDirection = 'ASC' AND @orderTarget = 'Price' THEN ROW_NUMBER() OVER (ORDER BY [price])

                    WHEN @orderDirection = 'ASC' AND @orderTarget = 'Area' THEN ROW_NUMBER() OVER (ORDER BY [area])                 

                    WHEN @orderDirection = 'ASC' AND @orderTarget = 'Evaluation' THEN ROW_NUMBER() OVER (ORDER BY [evaluation])

                    WHEN @orderDirection = 'DESC' AND @orderTarget = 'Date' THEN ROW_NUMBER() OVER (ORDER BY [date] DESC)

                    WHEN @orderDirection = 'DESC' AND @orderTarget = 'Price' THEN ROW_NUMBER() OVER (ORDER BY [price] DESC)

                    WHEN @orderDirection = 'DESC' AND @orderTarget = 'Area' THEN ROW_NUMBER() OVER (ORDER BY [area] DESC)                                       

                    WHEN @orderDirection = 'DESC' AND @orderTarget = 'Evaluation' THEN ROW_NUMBER() OVER (ORDER BY [evaluation] DESC)

                    ELSE ROW_NUMBER() OVER (ORDER BY tii.[no])

                END) AS rowNum

             , [no], [itemNo], [itemType], [itemOriginalNo], [itemOriginalType], [imagePath], [detailPath], [priceText], [price], [dealType], [dong], [complexName], [roomCount], [areaText], [area], [evaluation], [etc], [date], [registDate]

          FROM #TEMP_INTEREST_ITEM AS tii

     ) AS a

     WHERE rowNum > ( CASE WHEN @page > 1 THEN ( @page - 1 ) * @offset ELSE 0 END ) 

       AND rowNum <= ( @page * @offset )

  ORDER BY a.rowNum



저작자 표시
신고
블로그 이미지

건빵쥔광이씨

.net, 하이브리드앱, sql, jquery, angularjs 등을 주제로 개발 노하우와 팁등을 포스팅 합니다.

SELECT RIGHT('000000000000' + CAST(IDENTITY컬럼 AS VARCHAR), 12)
FROM 테이블 WITH(NOLOCK)
ORDER BY IDENTITY컬럼 ASC
저작자 표시
신고
블로그 이미지

건빵쥔광이씨

.net, 하이브리드앱, sql, jquery, angularjs 등을 주제로 개발 노하우와 팁등을 포스팅 합니다.

티스토리 툴바