데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

MS-SQL을 97버전부터 쭉... 15년 이상 써왔습니다. 그런데 SQL 2012에 들어서 이상한 점이 발견되서 문의드립니다.

일련의 순서를 저장하기 위해 #으로 정의하는 임시테이블을 사용합니다.

물론, 오라클을 따라서 Rank라는 함수가 있으나 문제는 이 함수가 2000에는 없어서..(거래처중 아직도 2000이 있답니다..)

여튼, rank와 같은 짓을 하기 위해 저는 임시테이블을 사용했습니다.

예를 들어 다음과 같은 데이터(A테이블)가 있습니다.

  DAT     SEQ
------------------
  104
  103
  101
  102
  105

일련번호에 데이터의 순서에 맞게 값을 넣고자 합니다. 잘 되면 다음과 같이 됩니다.

  DAT     SEQ
------------------
  104      4
  103      3
  101      1
  102      2
  105      5

그야말로 순서를 매기는 거죠. 그런데 위에서 말씀드렸다시피 거래처중 2000이 있다보니 rank를 쓰지 못합니다.(썼다가 대박난 적이 있..) 그래서 다음과 같이 작업합니다.
  
SELECT 데이터 INTO #T FROM A ORDER BY DAT

이렇게 되면 #T에는 다음과 같은 자료가 만들어져야 합니다.

  DAT    
---------  
  101      
  102      
  103      
  104      
  105

이제 여기에 뭐 몇가지 작업을 더해서 일련번호를 부여하고, 그다음에 원천 자료와 매칭해서 업데이트를 해왔습니다.

그런데.. 2012에 와서(그런데 모든 2012가 다그러는지는 미처 확인 못했습니다) 이 #T에 insert할때 이상하게 저장됩니다. 분명, ORDER BY를 주었음에도 데이터가 몇개씩 순서가 틀어지는 겁니다.

이건 그냥 임시테이블이 만들어져 있는 상태에서 SELECT * FROM #T를 해보면 알수 있습니다.
2012미만 버전과 2012버전이 서로 다른 결과 값을 보여주는거죠. 

그런데 문제는 2012에서 결과를 예전처럼 만드는 방법이 없다는 겁니다.(뭐.. 제가 모르는거겠지요..?)

뭔가 옵션이 있을거 같기도 한데요... 왜냐하면 다른 2012를 사용하는 다른 거래처는  별말이 없었거든요..

설이 길었습니다만.. 혹시 2012에서 이런 요상한 상황 보신적이 있으신가요???

물론, 일단은 해결해야해서 SQL의 버전을 체크해서 2012인 경우에는.. 해서 함수를 따로 만들어서 RANK로 돌렸습니다. 그래도 뭔가 찜찜해서요..

해결책이 있다면.. 알려주셨으면 합니다.


고맙습니다.

No. Subject Author Date Views
8733 프로시저 실행시 where 작은따옴표를 어떻게 처리 해야할지 고민입니다 도와주세요 [3] 이상준_300283 2015.05.24 4525
8732 MSSQL 책하나 추천 부탁드립니다. [1] Sinlay 2015.05.22 2612
8731 한컬럼에서 반복적인 중복 값제거하기 아시는분 [1] 곰요 2015.05.22 2555
8730 엑세스와 SQL서버 연결 문제 [2] 살신성곰 2015.05.22 3313
8729 커서 쿼리 문의 입니다. [2] 카르페디엠 2015.05.21 2544
8728 홈페이지 서버 관련 문의 (DB 관련 문의) [1] 아우렐리오 2015.05.21 4793
8727 중복구간 삭제 쿼리 질문드립니다 [2] saysay218 2015.05.20 3896
8726 mssql lock 에 대해서 궁금한게 있어서요.. [4] 죄민수 2015.05.19 2719
8725 프로시저의 주석이 다 사라졌습니다. 흑흑 2015.05.19 2186
» MS-SQL 2012버전에서 임시테이블 관련 문의입니다.. [3] 비와바람 2015.05.19 2538
8723 디비 용량 확보 관련 [1] hhhh 2015.05.18 2407
8722 rollup 질문입니다. [3] 카르페디엠 2015.05.18 2396
8721 MSSQL 2000 to MSSQL 2014 마이그레이션 방법 문의 드립니다. [1] 꼬부랑 2015.05.15 5113
8720 사용자의 쿼리 추적하기 [2] Larry 2015.05.14 3026
8719 sp_executesql에서 ROW_NUMBER() ORDER BY절 설정이 안먹습니다. 돌브레인 2015.05.14 2769
8718 쿼리 운용시 발생하는 메세지들입니다. 어떤문제인지 확인부탁드립니다. [3] 지니79 2015.05.13 3050
8717 Count 쿼리문의 [2] 장성원_305526 2015.05.13 2349
8716 DDLTrigger에서 프로시저 내용이 짤리게 됩니다~ [2] 더따뜻한 2015.05.13 2414
8715 단가와 이전단가를 같이 가져오려면 [3] 냥냥 2015.05.12 2460
8714 디스크 보고서에 자동증가/축소 이벤트 항목이 뜨지 않아요.. [2] 졸리앙쥬 2015.05.12 2719





XE Login