2017-12-13 30 views
1

I以下の表を持っている:スポットファイアデータ差:同じ列

Id Claim_id Date   
4 111   10/08/2017 
5 333   27/08/2017 
2 111   07/08/2017 
3 222   08/08/2017 
1 444   03/07/2017 
7 333   02/09/2017 
6 333   28/08/2017 

同じClaim_idに関連する複数の行(日付)があります。列 "Id"は列 "Date"に基づいています(最近の日付はIdが大きい)。

は、私は次の出力で、claim_idを超える日付の差によって与え計算列を作成する必要があります。私はここに与えられたコード使用しようとしました

Id Claim_id Date  Days 
3 111   10/08/2017 3 
1 333   27/08/2017 
2 111   07/08/2017 
4 222   08/08/2017 
7 444   03/07/2017 
6 333   02/09/2017 5 
5 333   28/08/2017 1 

Spotfire date difference using over functionをしかし、それは(それを動作しません。間違った値を生成する)。 私のテーブルはソートされていないためですが、ソースデータベースにアクセスできないため注文できません。

この式を変更するにはどうすればよいですか? ありがとうございました!これを行うにはV.Ang- @

ヴァレンティナ

+0

試した正確な表現は?何が間違った結果でしたか? –

+0

"DateDiff( 'day'、First([Date)OVER(Intersect([ClientId]、Previous([Date])))、[Date])」という式は次のとおりです。 (クレームがソートされていない場合)、2つの異なる月がある場合の差異を計算しません(例:02/09/2017 - 28/08/2017) –

答えて

1

一つの方法は、列 'decreasing_count' を追加することです。

これは、IDのインスタンス数を日付で数えます。意味 - 最も高い日付のIDが最初にカウントされ、その後、前の日付よりも低い日付を持つ同じIDの次のインスタンスが続きます。この列の利点は、このソリューションを機能させるためにデータをソートする必要がないことです。

今、この 'decreing_count'列を使用して、日付の差を計算します。

decreasing_count列式:

Count([Claim_id]) over (Intersect([Claim_id],AllNext([Date]))) 

注:この列は、バックグラウンドで動作します。

Days([Date] - Min([Date]) over (Intersect([Claim_id],Next([decreasing_count])))) 

最終出力:あなたは、テーブル内の列式計算

日にそれを表示する必要はありません

enter image description here

この情報がお役に立てば幸い!

+0

それは完全に動作します!あなたの時間と助けをありがとう、ありがとうございます。 –

+0

あなたはようこそ! – ksp585