뷰 작성시 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
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
(결과 예상 Row수 보다 높은 숫자를 지정 또는 해당 테이블의 Rowcount를 지정)
ALTER VIEW VW_ORD_TEST
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
-- 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