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
あります。value
time
上記の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 user
id