2017-03-23 14 views
-1

4 열이있는보기를 만들었습니다. 이 모양은 다음과 같습니다.보기 및 텍스트 캐스팅

status   |  name  |  faculty  | starting 
Garbage value | James Donald | XYZ    | 2001-01-01 
"     Ross Harley  ABC     2013-04-04  

더 많은 값이 있지만 걱정할 필요는 없습니다. 상태에서 쓰레기 값을 "가장 오래 섭취"또는 "최단 섭취"라는 텍스트로 바꿔야하지만 그럴 수 없습니다.

대답은보기 Q3가 만들

status | name | faculty | starting Longest Serving | James Donald | XYZ | 2001-01-01 Shortest Serving | Ross Harley | ABC | 2013-04-04

내 초기 쿼리처럼 보일 것이다 : 통계가 쓰레기로

create or replace view q3 (status, name, faculty, starting) as 
select max(q.starting) as status, q.name, q.faculty, q.starting 
from q2 q 
where (starting in (select min(starting) from q2)) 
    or (starting in (select Max(starting) from q2)) 
group by q.name, q.faculty, q.starting; 

최대 (q.starting을).

The 2 views involved
기본적으로 시작 열을 기준으로 누가 가장 길고 가장 짧은 시간에 누가 서비스했는지 찾아야합니다. (보기 q2의 데이터) 상태를 최장 검색 또는 최단 검색 중 하나로 바꿉니다.

문제를 이해하고 해결책을 알고 있다면 큰 도움이 될 것입니다. 감사.

+0

사용중인 DBMS? – jarlh

+0

PostgreSQL의 psql –

+0

샘플 데이터와 예상 결과를 더 추가 할 수 있습니까? – jarlh

답변

0

귀하의 질의에 다음과 적응 작동합니다 :

create or replace view q3 (status, name, faculty, starting) as 
select 
    CASE 
    WHEN starting in (select min(starting) from q2 THEN 'longest serving' 
    ELSE 'shortest serving' 
    END 
    AS status, 
    q.name, q.faculty, q.starting 
from q2 q 
where (starting in (select min(starting) from q2)) 
    or (starting in (select Max(starting) from q2)) 
group by q.name, q.faculty, q.starting; 
+0

감사합니다. 그것은 작동합니다! –