가장 빠른 시간으로 사용자를 선택하고 다른 데이터에 가입
-
20-09-2019 - |
문제
선택하려는 Oracle 데이터베이스가 있습니다. user
가장 빠른 행에서 필드 (a time
필드) 특정 조건이 충족되는 곳에서 어떻게 해야할지 모르겠습니다. 다음은 내 쿼리의 요점입니다.
SELECT id,
CASE WHEN value = 'xyz'
THEN 'Pending'
ELSE 'Not Pending'
END AS status,
time
FROM table1
INNER JOIN ...
WHERE subject IN (...) AND
field = 'Status'
내 문제는 선택하는 방법을 모른다는 것입니다 user
그리고 가장 빨리 행에서 값만 얻습니다. time
위치 조건과 일치하는 가치. 나는 내가 사용할 수 있다고 생각하지 않는다 HAVING
선택에서 집계 기능을하지 않기 때문에. '가장 초기 time
가치 '조건을 적용해야합니다 뿐 선택에 user
필드, 즉 내가 원한다 id
그리고 value
선택해야합니다 모두 값의 값 time
필드.
나는 위에서 가지고있는 select 진술을 유지하고 특정 선정 된 진술에 가입 할 수 있다고 생각했습니다. user
원해요.
SELECT id, status, time, user
FROM (
...query above...
),
(
SELECT user
FROM table1
WHERE subject in (...) AND
field = 'Status' AND
ROWNUM = 1
ORDER BY time ASC
)
그러나 이것은 하나의 값만 얻습니다 user
전반적으로, 별도가 있어야합니다 user
각각의 가치 id
첫 번째 쿼리에서 선택되었습니다. 내 제한 방법 SELECT user
다른 쿼리의 쿼리 id
필드? 이것이 내가 원하는 것을 얻기위한 올바른 접근법입니까?
해결책
SELECT id,
CASE WHEN value = 'xyz'
THEN 'Pending'
ELSE 'Not Pending'
END AS status,
time,
FIRST_VALUE(user) OVER (PARTITION BY id ORDER BY time) AS first_user
FROM table1
INNER JOIN
...
WHERE subject IN (...) AND
field = 'Status'
제휴하지 않습니다 StackOverflow