CASEが一致を見つけたら、最初の一致を壊して返します。しかし、私はすべてとケースステートメントから一致しています。例えばOracle複数のCASE文が真であると評価する
select distinct PERSON,
LOCATION,
(case
when LOCATION = 'CA' and PHONE is not null
then PHONE
when LOCATION = 'NY' and PHONE is not null
then PHONE
when LOCATION = 'FL' and PHONE is not null
then PHONE
when LOCATION = 'MA' and PHONE is not null
then PHONE
else '---'
end)
from DIRECTORY
where LOCATION in
('CA', 'NY', 'FL', 'MA');
人がそれぞれの状態にある電話番号を持つことができますので、私がしたいことは基本的に状態の順序によって「ランクさ」が見つかり最初電話番号、です。私が得ているのは、見つかったすべての電話番号です。あなたは、サブクエリ内の各状態に順位を割り当て、その後、それぞれの人のための最高位記録を保持でき
ありがとう - それは私が行方不明だった第2のcteだった。最初のcteからmax(LOCATION_RANK)のようなものを取得しようとしていましたが、それでもすべての行が返されました。これは素晴らしいことです - ありがとうございます... – user1628169