Мне нужно написать выражение, которое создаст отчет о клиентах, в котором будут показаны все клиенты, счета и транзакции. Включить учетные записи без транзакций. Решите, используя 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;
Прежде всего, вам также нужно присоединиться к таблице счетов и использовать 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;
Вы пробовали что-то подобное
SELECT IF(t.transaction_type = 'debit', CONCAT('-',t.transaction_amount), t.transaction_amount) "Amount" ...
Может быть, это работает и для Oracle
sqlplus
- это продукт, принадлежащий базе данныхoracle
, который, кажется, искажен, используя вместеsqlplus
иmysql
качестве тегов.