2017-08-31 6 views
0

ステータスを排他としてリストする必要があるレポートをまとめようとしています。通常、同じNFを持つ複数のレコードがありますが、複数のSTATUSがあります。特定のNFの最後のレコードがEXCLUDEDのステータスを持つことを考慮する必要があります。特定のNFの最後のレコードがEXCLUDEDと異なる場合は、レポートに表示しないでください。データをフィルタリングしてSQLクエリをマウントする

私は次のクエリがあります。誰

enter image description here

することができます:それはどうあるべきか

enter image description here

:私は次のような結果を持っている。例えば

SELECT id,nf,status,date FROM documents 

を助けて?

+0

どのDBMSを使用していますか?最も効率的な方法は、データベースベンダーによって異なる可能性があります。また、ステータスが「除外」の各「nf」、または「nf」の最新レコードが「除外」のステータスの最新のレコードを探していますか?微妙だが重要な違いがある。 – GarethD

答えて

2

、あなたはこれが欲しいです。 DATEまたはIDが必ずしも順次増加しない場合、動作しません。そのような場合には他の方法もありますが、そうでない場合は最も簡単です。

1

多分このような何か?

SELECT MAX(ID) AS ID, NF, STATUS, MAX(DATE) AS DATE 
FROM documents 
WHERE STATUS = 'EXCLUDED' 
GROUP BY NF, STATUS 

これはあなたを与える:

SELECT MAX(ID), NF, Status, MAX(DATE) 
FROM documents 
WHERE status = 'EXCLUDED' 
GROUP BY NF, Status 

これはあなたのサンプルデータに基づいて仮定を作る:私が正しくあなたを次てる場合

Result

+1

これは希望の結果にない '5、3、EXCLUDED'行を返します –

+0

あなたは正しいです。私はテーブルを見るときにそのラインを逃した。 – ikaikastine

関連する問題