2016-06-20 4 views
1
select DISTINCT a.Schooldistricttown, a.Schooldistrictnum 
from [Legacy].[dbo].[MyTables] as a 

만 1 발생을 가져 오기 :그것은 반환 중복 레코드

enter image description here

를 어떻게 a.Schooldistricttown의 하나 명의 발생을 얻는 방법을 말해 줄래?
DISTINCTGROUP BY으로 시도했습니다. 하지만 작동하지 않습니다.

참고 : 두 열을 모두 표시해야합니다. 당신의 가치, 그것은 중요하지 않는 경우

+0

당신은 모든 값 또는 최소 또는 최대 값이 필요합니까? 아니면 모두 쉼표로 구분합니까? – gofr1

+0

@Sampath 13 개 또는 30 개 삽입 여부는 신경 쓰지 않습니까? –

+0

@IvanStarostin 예, 문제 없습니다. – Sampath

답변

1

두 가지 옵션이 Schooldistrictnum 얻을 다음 MAX()/MIN()에 의해 그룹은이 문제를 해결합니다 : 당신이 치료를 할 경우

SELECT a.Schooldistricttown,MAX(a.Schooldistrictnum) 
from [Legacy].[dbo].[MyTables] a 
GROUP BY a.Schooldistricttown 

ROW_NUMBER()를 사용

SELECT s.Schooldistricttown,s.Schooldistrictnum 
FROM (
    SELECT a.Schooldistricttown,a.Schooldistrictnum, 
      ROW_NUMBER() OVER(PARTITION BY a.Schooldistricttown ORDER BY a.<ORDER_COLUMN>) as rnk 
    from [Legacy].[dbo].[MyTables] a) s 
WHERE s.rnk = 1 

<ORDER_COLUMN>을 실제 열로 바꿔서 원하는 값을 결정하십시오.

+0

'GROUP BY'는 나를 위해 충분하다. 감사합니다 :) – Sampath

0

모두 원하면 Schooldistrictnum, 이것을 사용

SELECT DISTINCT 
    a.Schooldistricttown, 
    (
     SELECT DISTINCT 
      ina.Schooldistrictnum + ', ' AS [text()] 
     FROM 
      [Legacy].[dbo].[MyTables] as ina 
     WHERE 
      ina.Schooldistricttown = a.Schooldistricttown 
     FOR XML PATH ('') 
    ) AS Schooldistrictnum 
    FROM [Legacy].[dbo].[MyTables] as a