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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36502
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 19852
8743 홈페이지랑 데이터베이스 연동이 자꾸 끊겨요ㅠㅠ 아로마로 2015.05.29 2748
8742 물리적 1대의 서버의 버전이 다른 2000 과 2008 두개 설치및운영이 가능한가요? [1] 김영환_281520 2015.05.28 3191
8741 ISNULL 의 check expression 파라메터 [1] 델리 2015.05.28 2552
8740 db server 2008 database를 local로 가져올때 [2] 수송대원 2015.05.28 2426
8739 반올림이 안되네요?? [1] 석준 2015.05.27 2370
8738 XEvents에서 파일 관리 [2] 더따뜻한 2015.05.27 3029
8737 SQL Server -> mongodb로 데이터 마이그레이션 [1] 메칸더 2015.05.27 5026
8736 쿼리 질문드립니다 [3] Sinlay 2015.05.26 2798
8735 Join VS 하위쿼리 [1] Sinlay 2015.05.26 2493
8734 많은양의 데이타 삭제시 질문 [3] hhhh 2015.05.24 2908
8733 프로시저 실행시 where 작은따옴표를 어떻게 처리 해야할지 고민입니다 도와주세요 [3] 이상준_300283 2015.05.24 4798
8732 MSSQL 책하나 추천 부탁드립니다. [1] Sinlay 2015.05.22 2674
8731 한컬럼에서 반복적인 중복 값제거하기 아시는분 [1] 곰요 2015.05.22 2602
8730 엑세스와 SQL서버 연결 문제 [2] 살신성곰 2015.05.22 3366
8729 커서 쿼리 문의 입니다. [2] 카르페디엠 2015.05.21 2593
8728 홈페이지 서버 관련 문의 (DB 관련 문의) [1] 아우렐리오 2015.05.21 4858
8727 중복구간 삭제 쿼리 질문드립니다 [2] saysay218 2015.05.20 3988
8726 mssql lock 에 대해서 궁금한게 있어서요.. [4] 죄민수 2015.05.19 2768
8725 프로시저의 주석이 다 사라졌습니다. 흑흑 2015.05.19 2247
» MS-SQL 2012버전에서 임시테이블 관련 문의입니다.. [3] 비와바람 2015.05.19 2608





XE Login