Я получил результат от сложного запроса ниже
SELECT o_items.sku,
o_items.name AS 'title',
o_items.qty_ordered AS 'quantity',
s_orders.base_amount_paid AS 'paid/unpaid'
FROM sales_order_payment s_orders
INNER JOIN (SELECT s.sku, s.name, s.qty_ordered, s.order_id
FROM sales_order_item s
INNER JOIN (SELECT p.entity_id
FROM catalog_product_entity AS p
INNER JOIN catalog_product_entity_int AS a
ON p.row_id = a.row_id
WHERE VALUE >= 0
AND
a.attribute_id =
(SELECT attribute_id
FROM eav_attribute
WHERE attribute_code = 'is_darkhorse')) as q
ON s.product_id = q.entity_id
WHERE s.created_at BETWEEN '2019-01-14' AND '2019-01-16') o_items
ON
s_orders.parent_id = o_items.order_id
это данные заказа, которые были оплачены или еще не оплачены. Сумма представляет собой оплаченный и Null представляет неоплаченный статус
Я пытаюсь получить результат ниже, но не смог, и мне нужна помощь. На самом деле этот результат показывает, каким образом количество товара было оплачено, а сколько еще не оплачено. Это будет результатом вышеупомянутых данных.
Пожалуйста, покажите мне, как мне достичь этих результатов.
Использовать этот. ...
представлять существующий код.
select .... , sum(case when s_orders.base_amount_paid is not null
then o_items.qty_ordered
else 0
end) as paid,
sum(case when s_orders.base_amount_paid is null
then o_items.qty_ordered
else 0
end) as unpaid
From .......
Вы можете использовать функции if
и ifnull
вместе (при условии, что вы используете mysql в качестве СУБД)
и выражение GROUP BY
SELECT c.sku, c.name,
sum(if(ifnull(base_amount_paid,0)=0,0,1)) as paid,
sum(if(ifnull(qty_ordered,0)=0,0,1)) as unpaid
FROM catalog_prod_ent_derived c
GROUP BY c.sku, c.name
где catalog_prod_ent_derived
представляет весь ваш запрос как подзапрос.