Oracle Group по выпускам - PullRequest
       4

Oracle Group по выпускам

0 голосов
/ 04 марта 2011

У меня есть запрос ниже. Проблема в том, что последний столбец productdesc возвращает две записи, и запрос не выполняется из-за различий. Теперь мне нужно добавить еще один столбец в предложении where запроса select, чтобы он возвращал одну запись. Вопрос в том, что столбец мне нужен добавление не должно быть частью предложения group by.

  SELECT product_billing_id,
         billing_ele,
         SUM(round(summary_net_amt_excl_gst/100)) gross,
         (SELECT DISTINCT description 
            FROM RES.tariff_nt 
           WHERE product_billing_id = aa.product_billing_id 
             AND billing_ele = aa.billing_ele) productdescr
    FROM bil.bill_sum aa
   WHERE file_id = 38613 --1=1
     AND line_type = 'D'
     AND (product_billing_id, billing_ele) IN (SELECT DISTINCT 
                                                    product_billing_id, 
                                                    billing_ele 
                                               FROM bil.bill_l2 )
     AND trans_type_desc <> 'Change'
GROUP BY product_billing_id, billing_ele

Я хочу изменить оператор выбора следующим образом, добавив новый фильтр в предложение where, чтобы он возвращал одну запись.

(SELECT DISTINCT description 
   FROM RRES.tariff_nt 
  WHERE product_billing_id = aa.product_billing_id 
    AND billing_ele = aa.billing_ele
    AND (rate_structure_start_date <= TO_DATE(aa.p_effective_date,'yyyymmdd') 
    AND rate_structure_end_date > TO_DATE(aa.p_effective_date,'yyyymmdd'))
) productdescr

aa.p_effective_date не должно быть частью предложения GROUP BY. Как мне это сделать? Oracle - это база данных.

Ответы [ 2 ]

3 голосов
/ 04 марта 2011

Таким образом, существует несколько записей RES.tariff для данного product_billing_id / billing_ele, дифференцированных по датам начала / окончания

Требуется описание записи, которая включает в себя 'p_effective_date' из bil.bill_sum. Кикер в том, что вы не можете (или не хотите) включать это в группу. Это говорит о том, что в bil.bill_sum есть несколько строк с разными датами вступления в силу.

Проблема заключается в том, что вы хотите сделать, если вы суммируете эти несколько строк с разными датами. Какую из этих дат вы хотите использовать для получения описания.

Если это не имеет значения, просто используйте MIN (aa.p_effective_date) или MAX.

0 голосов
/ 04 марта 2011

Посмотрели ли вы аналитические функции Oracle. Это хорошая ссылка Аналитические функции на примере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...