2016-03-05 6 views
1

У меня есть таблица order_details как этотВложенный запрос возвращения значения

id | SKU | quantity_purchased | discount_price 
--------------------------------------------------- 
1 | abc | 1     |  10.0 
2 | abc | 90    |  00 
2 | abc | 9     |  00 
3 | xyz | 1     |  50.0 
3 | xyz | 2     |  50.0 
4 | xyz | 100    |  00 
4 | xyz | 100    |  00 
----------------------------------------------- 

Мой запрос

select 
(select sum(quantity_purchased) from order_details where discount_price > 0.00) as qty_discount, 
(select sum(quantity_purchased) from order_details where discount_price = 0.00)as qty_original, 
sku 
from order_details 
GROUP BY sku 

мой искомый результат является

SKU | quantity_original | quantity_discount 
--------------------------------------------------- 
abc | 1     |  99 
xyz | 3     |  200 
----------------------------------------------- 

что, мне нужно две колонки для такой же sku последующий расчет,

Я не могу установить логику, я попытался с помощью GROUP BY в вложенном запросе, но это не работает ... любая помощь высоко ценится .. благодаря

UPDATE: пытается сделать это с помощью это, но все-таки неудача,

select 
(select sum(quantity_purchased) from order_details where discount_price > 0.00) as qty_discount, 
(select sum(quantity_purchased) from order_details where discount_price = 0.00)as qty_original, 
sku 
from order_details 
where sku = (select distinct sku from order_details) 
GROUP BY sku 

ответ

1

Вы можете использовать conditional aggregation для этого:

select sku, 
     sum(case when discount_price != 0 then quantity_purchased 
       else 0 
      end) quantity_original, 
     sum(case when discount_price = 0 then quantity_purchased 
       else 0 
      end) quantity_discount 
from order_details 
group by sku 

Results: 

| SKU | quantity_original | quantity_discount | 
|-----|-------------------|-------------------| 
| abc |     1 |    99 | 
| xyz |     3 |    200 | 
+0

+1, удивительное .... спасибо миллиона, вы сделали мой день босс ... одна вещи, кажется, вы перепутаны именами столбцов (оригинал стал скидкой) но это не проблема, у вас есть ваша логика, спасибо миллиарду ... вы действительно много помогли ... –

+0

ах ... вы исправили его, еще раз спасибо ... –

Смежные вопросы