MsSQL에서의 페이징

row_number() 함수를 사용해서 구현했다.

SELECT 

userid, userName, apprid, approvalName

FROM (
  SELECT ROW_NUMBER() OVER(ORDER BY userid(PK) DESC ) rowsNum, 
  a.userid AS userid, a.userName AS userName, b.apprid AS apprid, b.app  rovalname AS approvalName 
  FROM users a, approval b
  WHERE a.userid = b.apprid
) AS paging

WHERE rowsNum BETWEEN 1 AND 10
ORDER BY userid DESC

msSql에서는 limit 속성을 사용할수 없기 때문에 이런형태의 페이징을 구현했다. 

OVER() 함수에는 ORDER BY 각 꼭 들어가야 하며 기본키가 정렬값이어야 한단다.


GROUP_CONCAT을 STUFF()로 변환
SELECT
b.apprid, STUFF(
(SELECT ', ' + sb.appruid+'/'+su.nname
FROM appr_person sb, users su
WHERE sb.apprid = b.apprid and (sb.apprflag = 'd' AND sb.appruid = su.userid)
FOR XML PATH('')), 1, 2 ,'' )
FROM appr_person b
WHERE b.apprflag = 'd'
GROUP BY b.apprid



'database' 카테고리의 다른 글

mysql 트리거 생성시 function 생성 오류  (0) 2015.05.13
오라클 LISTAGG  (0) 2014.12.04
오라클 특수문자 제거  (0) 2014.12.02
mySql, Oracle에서 msSql 함수 변환작업  (0) 2014.06.19
table data 복사 하기  (0) 2014.06.12
Posted by 우주정복☆
,