database
Oracle ~> MsSQL 변환작업 두번째
우주정복☆
2014. 6. 26. 15:11
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