背景 :- 優先サプライヤーとして指名されたプロジェクトで見積もったアイテムの価値と、指名されていないアイテムの価値を知りたいシナリオがあります。
私が自由に使えるテーブルは dba.lead -> dba.a_quotelne 項目が指定されているかどうかを決定する列は次のとおりです: "dba"."a_quotelne"."altlineref" altlineref = 0 の場合、名前は付けられません。 = 1 の場合、名前が付けられています。ただし、アイテムの各グループの最初の行のみに 1 または 0 が含まれます。残りは Null です。
例
"leadno" "lead_desc" "lineno" "calc_value" "altlineref" "calc_groupingref"
1 Canary Wharf 1 10 0 1000
1 Canary Wharf 2 16 Null 1000
1 Canary Wharf 3 12 Null 1000
1 Canary Wharf 4 12 1 1001
1 Canary Wharf 5 13 Null 1001
2 Rosente Lane 1 14 0 1002
2 Rosente Lane 2 14 1 1003
2 Rosente Lane 3 12 Null 1003
2 Rosente Lane 1 15 1 1004
2 Rosente Lane 2 267 Null 1004
2 Rosente Lane 3 298 Null 1004
次に、次のコードを使用して、指定された値と指定されていない値を分割しましたが、それぞれの合計が必要になり、その計算された合計のみをはるかに大きなレポートで使用するようになりました。
SELECT "dba"."lead"."leadno",
"dba"."lead"."lead_desc",
"dba"."a_quotelne"."quoteno",
"dba"."a_quotelne"."lineno",
"dba"."a_quotelne"."calc_value" * MAX("dba"."a_quotelne"."altlineref") OVER (PARTITION BY "dba"."a_quotelne"."calc_groupingref") AS SPEC_VALUE,
"dba"."a_quotelne"."calc_value" - SPEC_VALUE AS NONSPEC_VALUE
FROM "dba"."a_quotelne",
"dba"."lead"
WHERE ( "dba"."a_quotelne"."leadno" = "dba"."lead"."leadno" )
GROUP BY "dba"."a_quotelne"."altlineref",
"dba"."a_quotelne"."calc_groupingref",
"dba"."a_quotelne"."calc_value",
"dba"."a_quotelne"."quoteno",
"dba"."lead"."lead_desc",
"dba"."lead"."leadno",
"dba"."a_quotelne"."lineno"
私が達成したい結果は次のとおりです
"leadno" "lead_desc" Nonspec value Spec value
1 Canary Wharf 38 25
2 Rosente Lane 14 606
あなたはおそらく私がここで私の深さから少し離れていることを知っているので、どんな助けも大歓迎です-そして、指定された値と指定されていない値を分割する方法について誰かがより良い提案を持っているなら、それを含めてください.
よろしくお願いします
フィル