user特定の条件が満たされている(フィールドに基づいて)最も早い行からフィールドを選択しようとしているOracleデータベースがあり、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最も早い値を持つ行から値のみをSELECTして取得する方法がわからないことです。SELECTで集計関数を実行していないため、time使用できないと思います。HAVING「最も早いtime値」の条件は、フィールドの選択にのみuser適用する必要があります。つまり、フィールドのすべての値に対して選択する必要がidあります。valuetime
上記のSELECTステートメントを保持してから、必要な特定のものを取得する別のSELECTステートメントとJOINできると考えて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全体に対して1つの値しか取得しないため、最初のクエリでSELECTされたuser値ごとに個別の値が必要です。他のクエリのフィールドでクエリidを制限するにはどうすればよいですか?これは私が欲しいものを手に入れるための正しいアプローチでさえありますか?SELECT userid