SQL объединяет два представления в одно

У меня есть два представления: TableA и TableB, которые имеют очень похожую информацию, но есть несколько уникальных столбцов.

Вот мои два представления и их структура таблицы

Я бы хотел, чтобы конечный результат выглядел так

Там, где исходные столбцы: идентификатор клиента, номер счета, дата проверки, год и описание начисления просто укладываются друг на друга. Столбцы "Тип начисления", "Сумма счета", "Сумма обязательства" и "Итого" также будут накладываться друг на друга, но если в соответствующем представлении нет значения, по умолчанию используется значение "ноль" (или ничего).

Я считаю, что мне нужно сделать, чтобы некоторые из столбцов (те, которые названы одинаково) для объединения (?), А остальное осталось таким, как есть, и когда для них нет значений для заполнения нулями (или даже лучше ничего) Я пытаюсь собрать их в одну таблицу, чтобы можно было использовать сводную таблицу из одного источника данных (вместо двух отдельных источников данных).

Извините за плохое форматирование (я использовал изображения, так как не мог понять, как правильно использовать | s).

2 ответа

Решение

Вы можете использовать UNION ALL для возврата 2 запросов в виде одного набора результатов, если все столбцы совпадают. В вашем случае ваши столбцы не полностью совпадают, но вы видите нулевое значение для любого несоответствия столбцов, поэтому в этом случае вы можете просто отобразить нулевое значение и имя столбца. (например, NULL как "Всего")

SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription, 
       NULL as 'ChargeType', NULL as 'Total', BilledAmount, LiabilityAMount
FROM TABLEA
UNION ALL
SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription, 
       ChargeType, Total, NULL as 'BilledAmount', NULL as 'LiabilityAmount'
FROM TABLEB

Вы можете создать вид, как показано ниже:

create view yourview as 
    select clientid, [invoice number], [check date], [year], [Charge Description], Null as [Charge Type], Null as Total, [Billed Amount], [Liability Amount] from tableA
    union all
    select clientid, [invoice number], [check date], [year], [Charge Description],[Charge Type], Total,  Null as [Billed Amount],  Null as [Liability Amount] from tableB
Другие вопросы по тегам