选择与最早的时间用户,并与其他数据结合
-
20-09-2019 - |
题
我在那里我试图选择从那里某些条件得到满足的最早的行(根据user
场)一time
领域的Oracle数据库,我不知道该怎么做。这里是我的查询的要点:
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
值符合WHERE条件从该行获得唯一的值。我不认为我可以使用HAVING
,因为我没有做任何聚合函数在我的选择。在“最早time
值”条件需要施加的仅到user
字段的选择,即,我想为所有的id
字段的值将被选择value
和time
。
我想我可以保持SELECT语句我上面,然后与获取特定user
我想另一个SELECT语句的JOIN。
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