2016-10-19 6 views
1

colA를 제외한 모든 열에 대해 DISTINCT를 선택해야합니다. 이를 달성하기 위해 T-SQL에서 OVER 절을 사용하는 방법을 보여주는 몇 가지 예제를 발견했습니다. 그러나, 그들은 매우 구체적이어서 내 상황에 적용하기가 어렵습니다. 누구나 할 수있는 통찰력은 매우 감사 할 것입니다.T-SQL의 OVER 절을 사용하여 하나만 제외하고 모든 열에서 DISTINCT를 선택하십시오. colA, colB, colC, colD가있는 테이블이 있습니다.

+0

'SELECT DISTINCT colB, colC, colD FROM table'을 확인 하시겠습니까? –

+0

이미 시도한 일부 SQL 문을 게시하십시오. –

+0

a, b, c, d와 b를 선택해야한다면 c, d는 구별 될 필요가있다. 왜 mytable 그룹의 b, c, d 순서로 max (a), b, c, d를 선택 하는가? 뭐든지; – ZLK

답변

0

DENSE_RANK는 ASC 순서로, 다른 하나는 DESC 순서로 사용할 수 있습니다. DENSE_RANK를 두 번 더 사용하고 1을 뺍니다. 그런 식으로 OVER 절이있는 SELECT DISTINCT를 얻었습니다.

0

OVER 절을 사용할 필요가 없으므로 주석에 제시된대로 DISTINCT 또는 GROUP BY를 사용하십시오. 어쨌든 OVER 절을 사용하려면

;WITH CTE AS 
(
SELECT colB, colC, colD,ROW_NUMBER() OVER(PARTITION BY colB, colC, colD ORDER BY (SELECT 1)) RN FROM TABLE 
) 
SELECT colB, colC, colD FROM CTE WHERE RN=1