이 블로그 검색

2011년 8월 9일 화요일

Using order by in View

뷰에서 정렬 사용

뷰 작성시 Order by를 기본적으로 사용할 수 없으나
TOP PERCENT 등을 사용하여 정렬을 사용할 수 있다.

- 코드, 코드명이 정렬되지 않은 데이터 생성
CREATE TABLE ORD_TEST (
        ORD_CODE VARCHAR(2)
,       ORD_NAME VARCHAR(2)
)
INSERT INTO ORD_TEST SELECT '02' AS ORD_CODE , 'V0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '03' AS ORD_CODE , 'L0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '00' AS ORD_CODE , 'K0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '05' AS ORD_CODE , 'T0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '04' AS ORD_CODE , 'S0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '09' AS ORD_CODE , 'A0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '07' AS ORD_CODE , 'B0' AS ORD_NAME 
INSERT INTO ORD_TEST SELECT '01' AS ORD_CODE , 'E0' AS ORD_NAME

SELECT * FROM ORD_TEST


# TOP Percent 99.9999 를 사용한 정렬  
(전체 Row수를 감안하여 누락되는 Row가 없도록 소숫점을 지정한다.)
CREATE VIEW VW_ORD_TEST
AS
SELECT TOP 99.9999 PERCENT  ORD_CODE , ORD_NAME  FROM ORD_TEST
ORDER BY ORD_CODE

SELECT * FROM VW_ORD_TEST




# TOP (number) 를 사용한 정렬
(결과 예상 Row수 보다 높은 숫자를 지정 또는 해당 테이블의 Rowcount를 지정)
ALTER VIEW VW_ORD_TEST
AS
SELECT TOP 10000 ORD_CODE , ORD_NAME  FROM ORD_TEST
-- SELECT TOP (select count(*) from ORD_TEST) ORD_CODE , ORD_NAME  FROM ORD_TEST
ORDER BY ORD_CODE 

SELECT * FROM VW_ORD_TEST




참고: top 100 Percent를 사용했을 때는 정렬이 되지 않음.

ALTER VIEW VW_ORD_TEST
AS
SELECT TOP 100 PERCENT  ORD_CODE , ORD_NAME  FROM ORD_TEST
ORDER BY ORD_CODE

SELECT * FROM VW_ORD_TEST



DROP VIEW VW_ORD_TEST
DROP TABLE ORD_TEST

댓글 없음:

댓글 쓰기