0

いくつかの計算を実行したいテーブルがありますが、このselectステートメントは私のオラクルの操舵室の上にあります。

私はオラクルで(これと同じくらい)試みたかったのです。しかし、最終的には、これはphpを介して実行され、画面に出力を取得することになります。

これはOracle8i用です

私は4つの重要なデータを持っています-(顧客ID、New_Item、Suggested_net、および年ごとのボリューム)

customer_id = #
new_item = 0 or 1
suggested_net = #
year_1_n =  #
year_2_n =  #
year_3_n =  #
year_1_e =  #
year_2_e =  #
year_3_e =  #

new_items = 0は、year_1_e、year_2_e、year_3_eにのみ相関します

new_items = 1は、year_1_n、year_2_n、year_3_nにのみ相関します

これが例です

customer_id, new_item, suggested_net, year_1_n, year_2_n, year_3_n, year_1_e, year_2_e, year_3_e

2, 0, 4.25, null, null, null, 100, 100, 100;
2, 0, 5.25, null, null, null, 100, 100, 100;
3, 0, 2.50, null, null, null, 100, 100, 100;
1, 0, 3.50, null, null, null, 100, 100, 100;
2, 1, 5.99, 100, 200, 300, null, null, null;
3, 1, 4.99, 200, 400, 600, null, null, null;

したがって、この情報を取得する必要があります。 各行について、ボリュームを追加します(year_x ...)* Suggested_net次に、その金額をnew_item=0または1でグループ化されたcustomer_idに追加します。

したがって、上記の表を使用します

Customer 2, new_item = 0 would have a sum of (1275 + 1575)
Customer 1, new_item = 0 would have a sum of 1050
Customer 2, new_item = 1 would have a sum of 3594

などなど。

これは、selectステートメントで実行できる場合とできない場合がありますが、私が言ったように、オラクルで手間のかかる作業をできるだけ多く行い、残りはphpで処理できます。

4

3 に答える 3

2
select customer_id
     , new_item
     , sum((nvl(year_1_n, 0) + 
            nvl(year_2_n, 0) + 
            nvl(year_3_n, 0) +
            nvl(year_1_e, 0) + 
            nvl(year_2_e, 0) + 
            nvl(year_3_e, 0)) *suggested_net) Total
  from t1
 group by customer_id
        , new_item
于 2012-09-07T18:57:09.683 に答える
1
SELECT Coustomer_Id,
       new_item,
       SUM((CASE WHEN new_item = 1 THEN year_1_n + year_2_n + year_3_n 
                 WHEN new_item = 0 THEN year_1_e + year_2_e + year_3_e
            END ) * suggested_net) AS TotalSum
  FROM Table1
 GROUP BY Coustomer_Id,
       new_item

また

SELECT Coustomer_Id,
       new_item,
       SUM(DECODE(new_item, 1, year_1_n + year_2_n + year_3_n 
                          , 0, year_1_e + year_2_e + year_3_e
                          , 0) * suggested_net) AS TotalSum
  FROM Table1
 GROUP BY Coustomer_Id,
          new_item
于 2012-09-07T18:47:59.320 に答える
0

これを試してください:

select customer_id、new_item、sum(case new_item when 0 then Suggested_net *(year_1_e + year_2_e + year_3_e)else Suggested_net *(year_1_n + year_2_n + year_3_n)end)total

テーブルから

customer_id、new_itemでグループ化します。

于 2012-09-07T18:56:41.583 に答える