2017-01-12 11 views
0

料金が含まれているテーブルがあります。各料金にはステータスがあります。ユーザーが料金の数量を変更すると、元の行が削除可能(ステータスは[削除可能]に変更された状態)とマークされ、ユーザーが入力した数量の新しい行が作成されます。この新しい行には有料のステータスが与えられます。監督者は手数料の変更を確認する必要があり、一度行うと元の行のステータスが「削除済み」に更新されます。私がしようとしているのは、手数料が修正されたときです。元の手数料のステータスが削除の準備完了であり、新しい手数料ステータスが有料の場合は、削除の準備完了を返します。元の料金ステータスが削除済みで、新しい料金ステータスが有料の場合は、有料料金を返します。私は使用しようとしましたテーブル内の値に基づくSQLの返信行

select ISNULL(b.StatusId, c.StatusId) id 
from (
    select * 
    from FeeItem 
    where Status = Paid) b 

left join (
    select * 
    from FeeItem 
    where Status = Ready For Delete) c 
on b.FormId = c.FormId 

しかし、それは間違っています。正しい方向に私を向けるどんな助けも大歓迎です。

感謝:)

+1

サンプルデータと予想される出力は、ここでは参考になります。あなたはそれらを提供できますか? – JohnHC

+1

文字列定数は一重引用符で囲む必要があります。また、サンプルデータと望ましい結果が役立ちます。 –

答えて

0

はこれを試してみてください:

Select * 
From (Select 
    t.*, 
    Row_number() over (partition by formid 
     order by Case status 
      when 'ready for delete' then 1 
      when 'paid' then 2 else 3 end) rn 
From feeitem t) t 
Where rn = 1; 
関連する問題