вроде право присоединиться - PullRequest
2 голосов
/ 07 ноября 2019

У меня есть следующие две таблицы SQL (на сервере sql):

Payment(physical payment made)
+----+-------+-----------+---------------------+
| id |Amount | BookingId | Transaction Type    |
+----+-------+-----------+---------------------+
| 1  | 10000 |   2       |   p(normal payment) |
+----+-------+-----------+---------------------+
| 2  | 90000 |   2       |   p(normal payment) |
+----+-------+-----------+---------------------+
| 3  | 8000  |   2       |   p(normal payment) |
+----+-------+-----------+---------------------+
| 4  | 8000  |   3       |   r(refunds)        |
+----+-------+-----------+---------------------+
| 5  | 10000|    4       |   r(refunds)        |
+----+-------+-----------+---------------------+

Возвраты (которые будут сделаны в будущем)

+----+--------+-----------+
| id | Amount | BookingId |
+----+--------+-----------+
| 1  | 10000  |   2       |
+----+--------+-----------+

ПерваяТаблица содержит различные типы платежей: обычные платежи, возвраты, платежи с использованием токенов, физически сделанные против bookingid.

Во второй таблице содержится запись будущих возвратов, которые будут сделаны для этого конкретного идентификатора BookingID.

iЯ забираю все возвратные платежи из первой таблицы, но я хочу забрать bookingId 2 также в одном наборе данных.

Результат

+----+-------+-----------+------------+
|id  |Amount | BookingId | Difference |
+----+-------+-----------+------------+
| 4  | 8000  |    3      |  0         |
+----+-------+-----------+------------+
| 5  | 10000 |    4      |  0         |
+----+-------+-----------+------------+
| 6  |   0   |    2      |  10000     |
+----+-------+-----------+------------+

Любая помощь будет высоко ценится. бронирование 3 и 4 имеет возврат, но не 2

1 Ответ

4 голосов
/ 07 ноября 2019

Использование UNION

SELECT id, Amount, BookingId, 0 AS Difference FROM FIrstTable WHERE Transaction Type = 'R'
UNION ALL
SELECT id, 0 AS Amount, BookingId, Amount AS Difference FROM SecondTable
...