私は顧客データの行を含むDB2テーブルを持っています。これは、顧客が当社のサービスを使用してお金を貯めたかどうかを判断するために使用されます古いレコードはプロセスを引き起こした購入であり、新しいレコードは同じ製品を再度購入した後です。希望の結果は、最も古い支払額、最新の金額、2行の差異を含む1つの行が、お金を貯めたことを確認することです。データはこのDB2は複数の行を1つの結果として選択します
ID Name Product ID Sale ID First Paid Last Paid
1 Mary 15 195 8 NULL
2 Mary 15 195 NULL 3
3 Bob 8 283 16 NULL
4 Bob 8 283 NULL 11
のようにレイアウトされている
所望の結果は、この
Name Sale ID Product ID First Paid Last Paid Savings
Mary 195 15 8 3 5
Bob 283 8 16 11 5
ですこれは、このクエリの結果が使用されている私は
Name Sale ID Product ID First Paid Last Paid Savings
Mary 195 15 8 NULL 8
Mary 195 15 NULL 3 -3
Bob 283 8 16 NULL 16
Bob 283 8 NULL 11 -11
代わり得るものですこれはサブクエリの一部として生成されるように大きなレポートを駆動します。
SELECT cost.name, cost.saleid, cost.productid, cost.saleid,
cost.firstpaid, cost.lastpaid, sum(cost.firstpaid - cost.lastpaid) as savings
from (
select distinct saleid, max(name) as name, max(productid) as productid,
max(firstpaid) as firstpaid, max(lastpaid) as lastpaid) as cost
私が意図したように、私の大きなクエリは動作しますが、彼らは一度しかカウントされなければならないとき、顧客は二度カウントされ、この最も内側のクエリによって返された複数の行が結果にマイナスの影響を与えていることを見出しました。 DB2でこれらの値を同じ行に取得する方法はありますか、結果を取り戻し、SQLクエリーではなくPHPコードでフィルタリングする必要がありますか?顧客ごとに2つの行を想定し
「cost.saleid」を2回使用することを意図していましたか?それは重複したエントリを引き起こしている可能性がありますか? – DD84