SQL ставит (-) знак перед моим выводом - PullRequest
0 голосов
/ 31 января 2019

ERD Ожидаемый результат

Мне нужно написать заявление, в котором будет представлен отчет о клиентах, в котором будут показаны все клиенты, счета и транзакции.Включить учетные записи без транзакций.Решите, используя JOIN ... ON.И там должно быть - войдите в мой выводaction_amount, если тип_талога дебетовый.

Я пытался использовать формат, если еще, когда тогда ... и т.д.

Это то, что я до сих пор.Не могу понять, поставил - подпишите мой вывод.

select c.first_name "First", c.surname "Last",c.date_entered "Acct Date",
       t.account_type "Type", t.transaction_number "Trans #", 
       t.transaction_date "Trs Date", t.transaction_amount "Amount"
  from wgb_customer c
  join wgb_transaction t on (c.customer_number=t.customer_number) 
 order by 1,2,3,4;

1 Ответ

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

Прежде всего, вам также необходимо присоединиться к таблице счетов и использовать LEFT OUTER JOIN для таблицы транзакций, поскольку это должно создать выходные данные также для учетной записи без транзакций.
Кроме того, используйте CASEзаявление о типе транзакции для добавления знака минус.
Примерно так (хотя я не пробовал; может даже не скомпилировать):

SELECT          cust.first_name         AS first_name,
                cust.surname            AS last_name,
                acct.account_type       AS acct_type,
                acct.date_created       AS acct_date,
                trns.transaction_number AS trans_nr,
                trns.transaction_date   AS trans_date,
                CASE
                  WHEN trns.transaction_type IS NULL THEN NULL
                  WHEN trns.transaction_type = 'D'   THEN '-' || TO_CHAR(transaction_amount, 'L99G999D99')
                  ELSE TO_CHAR(transaction_amount, 'L99G999D99')
                END                     AS amount
FROM            wgb_customer cust
JOIN            wgb_account  acct
  ON            acct.customer_number = cust.customer_number
LEFT OUTER JOIN wgb_transaction trns
             ON trns.customer_number = acct.customer_number
            AND trns.account_type    = acct.account_type
ORDER BY        last_name,
                first_name,
                acct_type,
                acct_date,
                trans_nr;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...