2016-08-11 8 views
1

私はCASE WHENの引数に問題があります。おそらくOVER関数と関係があります。私は取得していますエラーは、私がこれまでの任意の助けを大幅に enter image description hereケースSpotfireで作業していないとき

enter image description here

をいただければ幸いです

CASE 
WHEN [Pay in 2015] = 1 and [Reimburse in 2016]= 1 OVER ([Customer ID]))>=2 then 2 
ELSE 0 
END 

でいる 表現「式がOVERライン上の2文字の51の後に有効ではありません」です

+2

あなたはウィンドウ関数を持っていないので、 'over'節は使用できません。達成しようとしていることを正確に説明できますか?いくつかの文脈は、私たちが質問を理解し、最終的にあなたを抱くのに役立ちます。 – Mureinik

+0

@Mureinik:レスポンスありがとうございます。私が達成しようとしていることを説明するための図を添付しました。私が達成しようとしているのは、[2015年に支払う]に「1」、[2016年に払い戻し]に「1」があり、[顧客ID]が同じままで新しい列に「2」と表示された場合です"0"助けてくれてありがとう –

+0

これは助けになるが、まだ分かっていない。出力をどのように見たいのですか?このクエリーに別の列を追加するか、または何かを集計するだけですか? – Mureinik

答えて

1

このようなことを試してみてください...特定のデータのために交差するもので遊ぶ必要があるかもしれません。データなしでテストするのは難しいです。

case 
    when 
    sum([Pay in 2015]) over (intersect([CustomerID],[Amount],[Date of Payment])) >= 2 
    and 
    sum([Reimburse in 2016]) over (intersect([CustomerID],[Amount],[Date of Payment])) >= 2 
    then 2 
    else 0 
end 

EDIT

そこにあなたのデータを見た後、私は、各充電および償還のためのユニークな識別子せずにこれを行う方法が表示されません。たとえば、貼り付けたデータには4つの料金があります。 80の場合は2、-80の場合は2は、これらがオフセットすることを意味します。しかし、同じ自然と目的のために別の80があったらどうなるでしょうか?最後の1つを無視して、2つの料金に2つのクレジットを好きになるような表現はありません。一般的に言うと、本当にItemIDや、一意の識別子を指定して料金を返す必要があります。さもなければ、誰かが80ドルまたは150ドルの口座に振り込むことができ、どのような特定の商品(どの旅行券など)を伝えるのかは分かりません。

お客様が今すぐ行うことができるのは、顧客全体を見て、請求された合計金額と比較して請求された合計金額を返しますが、各行を調整することは、ユニークチャージID /クーチャーIDなど

申し訳ありません。

+0

助けてくれてありがとう。ここに私のデータのサンプルを得る方法はありますか?私は人々がこれを管理している他の投稿を見てきました。 –

+1

最善の方法は、コピーして貼り付けて(そしてコードフォーマットを選択する)、コピーしてそれをテストしてテストすることです。 https://justpaste.it/のようなものや、データをダンプすることができる別のサイトを使用することもできます。通常、SOはそれをすべてSOに保つのが好きですが、必ずしも最良の選択ではありません。 – scsimon

+0

ちょうどそれがリンクしているのはhttps://justpaste.it/x7otで、短いバージョンはhttps:// jpstです。(J2 <0、YEAR(N2)= 2016) R:= N(AND(J2 <0、YEAR(N2)= 2016)これは、 D、L:L、L:L)+ SUMIFS(R:R、D:D、D:D、L:L、L:L) T:= N(AND(SU:J、J、D:D、D:D、L:L、L:L、S:S、S:S)= 0、S:S> = 2)) –

関連する問題