我有一个 Oracle 数据库,我试图user
从满足某些条件的最早行(基于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'
我的问题是我不知道如何选择并仅从与WHERE 条件匹配的user
最早值的行中获取值。time
我认为我不能使用HAVING
,因为我没有在我的 SELECT 中执行任何聚合函数。“最早的值”条件只time
需要应用于字段的选择,即我希望并被选择用于字段的所有值。user
id
value
time
我在想我可以保留上面的 SELECT 语句,然后用另一个 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
)
但是,这只能获得一个整体值,并且在我的第一个查询中每个 SELECTeduser
都应该有一个单独的user
值。id
如何SELECT user
通过其他查询的id
字段限制我的查询?这甚至是获得我想要的东西的正确方法吗?