2012-06-24 4 views
1

다음 저장 프로 시저를 실행 중이며 클래스 및 날짜 테이블 조인이 있습니다. 그러나 일곱 개 테스트 기록에서, 나는 결과에 단일 중복 기록을 받고 있어요 :T-SQL 저장 프로 시저에 DISTINCT 사용

SELECT DISTINCT dbo.Classes.Title, dbo.Classes.ClassTime, dbo.Classes.Category, 
    dbo.Classes.SubCategory1, dbo.Classes.[Description],dbo.Classes.ContactName, 
    dbo.Classes.ContactPhone, dbo.Classes.Location, dbo.Classes.Room, 
    dbo.Dates.StartDate 
    FROM dbo.Classes INNER JOIN dbo.Dates ON dbo.Classes.ClassID = dbo.Dates.ClassID 
    ORDER BY StartDate DESC 
+0

두 행의 StartDates (또는 ClassTime)는 어쨌든 차이가 있지만 차이점은 출력에 표시되지 않습니다. 결과에서 StartDate 컬럼을 h 제하여이를 확인할 수 있습니다. –

+1

Lieven, 충분하지 않은 커피! 당신이 맞았습니다. 응답으로 응답을 작성하십시오. 나는 정확하게 표시 할 것입니다. :) – IrishChieftain

+0

. 나는 대답을 게시 할 것이다. –

답변

2

는 대부분의 경우이 두 행 당신의 Date 열 중 하나는 다소 차이가 있지만 차이는에 표시되지 않습니다 산출.

결과에서 해당 열을 삭제하여 확인할 수 있습니다.

SELECT DISTINCT dbo.Classes.Title 
     , dbo.Classes.Category 
     , dbo.Classes.SubCategory1 
     , dbo.Classes.[Description] 
     , dbo.Classes.ContactName 
     , dbo.Classes.ContactPhone 
     , dbo.Classes.Location 
     , dbo.Classes.Room 
FROM dbo.Classes 
     INNER JOIN dbo.Dates ON dbo.Classes.ClassID = dbo.Dates.ClassID 

별개로 별명을 사용하여 문장의 가독성을 높이는 것이 좋습니다.

SELECT DISTINCT dbo.Classes.Title 
     , c.Category 
     , c.SubCategory1 
     , c.[Description] 
     , c.ContactName 
     , c.ContactPhone 
     , c.Location 
     , c.Room 
FROM dbo.Classes AS c 
     INNER JOIN dbo.Dates AS d ON c.ClassID = d.ClassID 
관련 문제