Многократный оператор SELECT с использованием одной таблицы SQL - PullRequest
0 голосов
/ 11 января 2019

Надеюсь, у тебя все хорошо. На самом деле я работаю над проектом, и мне нужно рассчитывать ежедневные TOTAL_SALE, TOTAL_CASH и TOTAL_CREDIT .... Ниже приведен мой запрос, но мой запрос дает общую сумму выплат в TOTAL_CASH и в TOTAL_CREDIT, как и должно быть ..

+------------+------------+--------------+
| TOTAL_SALE | TOTAL_CASH | TOTAL_CREDIT |
+------------+------------+--------------+
|       1000 |        250 |          750 |
+------------+------------+--------------+ 

Ниже приведен мой SQL-запрос: -

SELECT

 sss.creation_date , SUM(sss.payment_due) as 'Total Sale', 
 (SELECT SUM(s.payment_due) FROM sale s WHERE s.payment_method LIKE '%Cash_%' AND s.shop='10' 
  AND s.DateNum >='20181201000000' AND s.DateNum <='20181231235959' GROUP BY s.creation_date)as 'Total Cash' , 

  (SELECT SUM(ss.payment_due) FROM sale ss WHERE ss.payment_method LIKE '%cCredit_%' AND ss.shop='10' 
  AND ss.DateNum >='20181201000000' AND ss.DateNum <='20181231235959' GROUP BY ss.creation_date)as 'Total Credit' , 

 SUM(discount) as 'Total Discount' , SUM(number_of_item_purchased) as 'Total Sold'

 FROM Sale sss

 WHERE sss.shop='10' AND sss.DateNum >='20181201000000' AND sss.DateNum <='20181231235959'

 GROUP BY sss.creation_date

1 Ответ

0 голосов
/ 11 января 2019

Вы можете попробовать ниже, используя условное агрегирование

SELECT
 SUM(payment_due) as 'Total Sale', 
 SUM(case when payment_method LIKE '%Cash_%' then s.payment_due end) as 'Total Cash' , 
 SUM(case when payment_method LIKE '%cCredit_%' then payment_due end) as 'Total Credit', 
 SUM(discount) as 'Total Discount' , 
 SUM(number_of_item_purchased) as 'Total Sold'
 FROM Sale 
 WHERE shop='10' AND DateNum >='20181201000000' AND DateNum <='20181231235959'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...