with table1 as ( select 'A' A1, '500000' A2, '2018-12-17 17:24:16.200' A3 union all select 'A' A1, '500000' A2, '2018-12-17 17:24:16.200' A3 union all select 'B' A1, '400000' A2, '2018-12-17 20:24:16.200' A3 union all select 'B' A1, '400000' A2, '2018-12-17 20:24:16.200' A3 union all select 'B' A1, '400000' A2, '2018-12-17 20:24:16.200' A3 union all select 'C' A1, '500500' A2, '2018-12-17 23:20:16.200' A3 union all select 'C' A1, '500500' A2, '2018-12-17 23:20:16.200' A3 ) select * from ( SELECT DENSE_RANK() OVER(ORDER BY S.A3 desc, S.A1) AS Row ,* , count(*) over() PageTotalCount FROM ( select ROW_NUMBER() OVER(PARTITION BY orderInfo.A1 ORDER BY orderInfo.A1) TopOrderRow , orderInfo.* from table1 orderInfo ) S ) S2
-------------------------------------------------------------------------
안녕하세요. 위의 쿼리로 열심히 생각해보았는데 한계가 있어 도움 좀 부탁드립니다.
table1은 원래 union all 하여 여러 테이블을 가져와서 사용 하고 있습니다.
제가 생성하고 싶은 쿼리는 PageTotalCount라는 컬럼으로 ROW 또는 A1을 기준으로 중복이 제거 된 총 개수를 구하고 싶습니다.
아래와 같이 표현하고싶은데 도움 좀 부탁드립니다.
count(*) over()로 하니 모든행이 7개로 나오네요 ㅠㅠ 이걸 모두 3으로 표현하려면 어떻게 해야할까요;
ROW | TOPORDERROW | A1 | A2 | A3 | PageTotalCount |
1 | 1 | C | 500500 | 2018-12-17 23:20:16.200 | 3 |
1 | 2 | C | 500500 | 2018-12-17 23:20:16.200 | 3 |
2 | 1 | B | 400000 | 2018-12-17 20:24:16.200 | 3 |
2 | 2 | B | 400000 | 2018-12-17 20:24:16.200 | 3 |
2 | 3 | B | 400000 | 2018-12-17 20:24:16.200 | 3 |
3 | 1 | A | 500000 | 2018-12-17 17:24:16.200 | 3 |
3 | 2 | A | 500000 | 2018-12-17 17:24:16.200 | 3 |
이렇게 충첩으로 쿼리를 작성한 이유는 S2에서 row를 활용하여 페이징처리를 하고 있습니다.
S 셀렉트 안에 여러 조건문이 추가 될거라 검색된 모든 개수가 필요한 상황입니다 ㅠㅠ