0

我有一张表,我想在上面运行一些计算,但这个 select 语句在我的 oracle 操舵室上方。

我想在甲骨文中尝试(尽可能多地)。但最终这将最终通过 php 运行以将输出输出到屏幕。

这适用于 Oracle 8i

我有 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 ...)*建议网络,然后将该数量添加到按 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 语句中执行或有效,但就像我说的那样,我想用 oracle 做尽可能多的繁重工作,其余的我可以用 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

试试这个:

选择 customer_id , new_item , sum(case new_item when 0 then Recommended_net*(year_1_e+year_2_e+year_3_e) else known_net*(year_1_n+year_2_n+year_3_n) end) 总计

从表

按 customer_id、new_item 分组;

于 2012-09-07T18:56:41.583 回答