как отправить запрос? - PullRequest
0 голосов
/ 12 марта 2020

Если я отправлю следующий запрос:

SELECT * FROM (
    SELECT COUNT(*) as total, SUM(ABS(AMOUNT)) AS Total_Amount 
    FROM success_log  
    WHERE TRANSACTION = 'success' ) t1 
CROSS JOIN  (
    SELECT COUNT(*) as success_total,  SUM((AMOUNT))  AS success_Amount 
    FROM success_log  WHERE 
    TRANSACTION = 'success' ) t2
CROSS JOIN  (
    SELECT COUNT(*) as Fail_total, SUM(ABS(AMOUNT)) AS Fail_Amount 
    FROM success_log  
    WHERE TRANSACTION = 'cancle') t3

результат:

enter image description here

, но я хочу результат:

enter image description here

как отправить запрос ??

схема enter image description here

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Должно работать следующее:

SELECT total,
       Total_amount,
       (total - Fail_total) AS success_total,
       (Total_amount - Fail_amount) AS success_Amount,
       Fail_total,
       Fail_amount
FROM (
    SELECT COUNT(*) as total,
           SUM(ABS(AMOUNT)) AS Total_Amount
    FROM success_log
    WHERE TRANSACTION = 'success'
) t1 
CROSS JOIN (
    SELECT COUNT(*) as Fail_total, 
           SUM(ABS(AMOUNT)) AS Fail_Amount 
    FROM success_log
    WHERE TRANSACTION = 'cancle'
) t3

Просто чтобы объяснить, что ваше второе перекрестное соединение t2 не вернуло правильный результат, поэтому я использовал исходные столбцы t1 и t3 и добавил два других столбца, вычтя их разницу показать сумму успеха и сумму.

0 голосов
/ 12 марта 2020

Вам необходимо удалить условие Где в запросе на выборку total_amount ...

Надеюсь, что это полезно ...

SELECT
  total,Total_Amount,success_total,success_Amount,Fail_total,Fail_Amount
FROM
  ( 
    SELECT
      COUNT() as total
      , SUM(ABS(AMOUNT)) AS Total_Amount 
    FROM
      success_log 
  ) t1 
  CROSS JOIN ( 
    SELECT
      COUNT() as success_total
      , SUM((AMOUNT)) AS success_Amount 
    FROM
      success_log 
    WHERE
      TRANSACTION = 'success'
  ) t2 
  CROSS JOIN ( 
    SELECT
      COUNT(*) as Fail_total
      , SUM(ABS(AMOUNT)) AS Fail_Amount 
    FROM
      success_log 
    WHERE
      TRANSACTION = 'cancel'
  ) t3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...