У меня ниже оператора SQL для генерации итога в нижней части результатов поиска, но я не хочу отображать Итого, если запись не найдена. Нужна помощь по приведенному ниже заявлению.
SELECT Member_ID, Order_Total, Shipping_Cost, TAX FROM Order Where
Order_Total > 100
UNION (
SELECT "Total" as Member_ID, sum(Order_Total) as Order_Total, sum(Shipping_Cost) as Shipping_Cost, sum(TAX) as TAX FROM Order Where
Order_Total > 100);
Всего 1 ответ
Вам не нужен UNION
, вы можете использовать опцию WITH ROLLUP
для автоматического суммирования. Если в запросе не выбраны строки, результат будет пустым.
SELECT IFNULL(Member_ID, 'Total') AS Member_ID, Order_Total, Shipping_Cost, TAX
FROM (
SELECT Member_ID, sum(Order_Total) as Order_Total, sum(Shipping_Cost) as Shipping_Cost, sum(TAX) as TAX
FROM `Order`
Where Order_Total > 100
GROUP BY Order_ID
WITH ROLLUP) AS x
Другой способ - сохранить UNION
, но добавить предложение HAVING
ко второму запросу.
SELECT Member_ID, Order_Total, Shipping_Cost, TAX
FROM `Order`
Where Order_Total > 100
UNION (
SELECT "Total" as Member_ID, sum(Order_Total) as Order_Total, sum(Shipping_Cost) as Shipping_Cost, sum(TAX) as TAX
FROM `Order`
Where Order_Total > 100
HAVING COUNT(*) > 0);