나는 테이블 자체에 조인을 남기거나 사례 내역을 사용하여 뷰 내에서 최대 값을 할당 할 수 있는지 궁금합니다. 나는 모든 값을 나열하는 뷰를 생성 할뿐만 아니라 등, 현재 행이 최대 행인지 표시 다른 열이최대 값을 기반으로 조인
Lastname Firstname Filename
Smith John 001
Smith John 002
Smith Anna 003
Smith Anna 004
:
Lastname Firstname Filename Max_Filename
Smith John 001 NULL
Smith John 002 002
Smith Anna 003 NULL
Smith Anna 004 NULL
나는 다음과 같은 테이블이 말
이것이 가능합니까? 다음 쿼리를 시도했습니다 :
SELECT Lastname, Firstname, Filename, CASE WHEN Filename = MAX(FileName)
THEN Filename ELSE NULL END AS Max_Filename
그러나 성은 그룹 by 절에 없습니다. 그러나 성, 성, 파일 이름을 그룹화하면 max_filename의 모든 내용이 파일 이름과 동일합니다.
내가 잘못하고있는 부분과이 쿼리를 작동시키는 방법을 이해할 수 있도록 도와 주시겠습니까?
두 번째로 더 우아한 솔루션으로 나를 때려 눕히십시오. 지난번에 끝나지 않을거야. 비록 질문이 있습니다. 귀하의 쿼리는 더 복잡한 실행 계획을 가지고 있으며 더 느리게 실행됩니다 (데이터에 의존 할 수는 있지만 인덱스 - 나는 많은 테스트를하지 않았습니다). 그게 기대 되니? – Szymon
@Szymon 중 어느 쪽을 말할 수 있습니까? 모든 쿼리가 인덱스에 있지 않으면 두 쿼리 모두 테이블을 전체 스캔해야합니다. 쿼리는 firstname, lastname (인덱스가 있다고 가정)에 대한 두 번째 검사를 수행해야하므로 더 복잡한 실행 계획을 가지고 있어야하며 훨씬 느리게 실행해야합니다. – Ben
글쎄, 실행 계획을 확인하지는 못했지만 실제로 쿼리에서 두 스캔 (또는 검색)이 내 쿼리보다 느려야합니다. 예제가있는 sqlfiddle가 있습니까? –