Мой набор результатов из запроса выглядит следующим образомГруппировка и агрегирование на основе конкретных условий
trackingnumber type price
------------------------------------------
12799467 AVRM 674.0536
12799467 AVRM 860.7415
12799467 PRICESTD 200.00
12799468 PRICESTD 590.85
12799469 PRICESTD 800
12799470 PRICESTD 640
12799471 PRICESTD 160
12799472 PRICESTD 2080
12799473 PRICESTD 354.3779
Я хочу, чтобы сгруппировать эту по trackingnumber
и в тех случаях, когда счетчик сгруппированных результирующего набора больше 1 возврата SUM
всего price
, который имеет type
, так как AVRM
еще возвращает отдельную цену, как есть. Если количество более, что ноль и ни один из них не имеет type
AVRM, то это общая цена будет нулевой
Ожидаемый результат будет таким
trackingnumber Total Price
-----------------------------------------
12799467 1534.7951 --sum of price excluding 200
12799468 590.85
12799469 800
12799470 640
12799471 160
12799472 2080
12799473 354.3779
Я не мог придумать способ, чтобы получить это делается для группировки по trackingnumber
и проверкам type
с помощью case
заявления в select
частях, но это только я считаю, не буду работать, так как мы не группа по type
Я не Сюры e, если это может быть достигнуто с использованием одного запроса.
что, если есть другой ряд, как '12799468 PRICESTD 100'' Какой price' у вернется тогда? – Utsav
, а также что, если где другая строка типа «123 AVRM 100». Поскольку это единственная запись для этого 'trackingnumber', вы вернете цену или нет. – Utsav
@Utsav - если мы читаем проблему буквально, если есть только одна строка для номера отслеживания, тогда «вернуть индивидуальную цену как есть» - предложение «else» в заявлении о проблеме OP не ссылается на «AVRM» или 'не AVRM'. Но первый вопрос стоит: что, если для номера отслеживания есть несколько строк, ни один из которых не имеет тип 'AVRM'? Или это невозможно в реальных данных? – mathguy