Консолидируйте все балансы в одном поле

У меня есть результат запроса, в котором у каждой детали есть свой столбец для отображения остатков.

Id  AccountNumber   Particular  Inst1_Balance   Inst2_Balance   Inst3_Balance   Inst4_Balance   Inst5_Balance
1   99921           Inst5       0.00            0.00            0.00            0.00            232.50
1   99921           Inst3       0.00            0.00            170.00          0.00            0.00
3   86123           Inst3       0.00            0.00            843.00          0.00            0.00    
4   76543           Inst2       0.00            123.00          0.00            0.00            0.00
5   12323           Inst4       0.00            0.00            0.00            1000.00         0.00
5   12323           Inst2       0.00            75.00           0.00            0.00            0.00
5   12323           Inst1       2765.00         0.00            0.00            0.00            0.00
7   23243           Inst5       0.00            0.00            0.00            0.00            865.00
8   43467           Inst2       0.00            435.00          0.00            0.00            0.00
9   67543           Inst3       0.00            0.00            1234.00         0.00            0.00
10  33245           Inst2       0.00            111.00          0.00            0.00            0.00
11  88881           Inst2       0.00            222.00          0.00            0.00            0.00
12  99931           Inst1       767.00          0.00            0.00            0.00            0.00
12  99931           Inst2       0.00            2345.00         0.00            0.00            0.00

Из приведенной выше таблицы я хочу объединить остатки реквизитов в один столбец.

Id  AccountNumber   Particular  Balance
1   99921           Inst5       232.50
1   99921           Inst3       170.00
3   86123           Inst3       843.00
4   76543           Inst2       123.00
5   12323           Inst4       1000.00
5   12323           Inst2       75.00
5   12323           Inst1       2765.00
7   23243           Inst5       865.00
8   43467           Inst2       435.00
9   67543           Inst3       1234.00
10  33245           Inst2       111.00
11  88881           Inst2       222.00
12  99931           Inst1       767.00
12  99931           Inst2       2345.00




;WITH tmptable AS  (  
    SELECT INS.CustomerId AS 'Id',
        INS.Particular AS 'Particular',
        CONCAT(CON.AccountNumber) AS 'AcctNumber',
        COALESCE(SUM(case when particular = 'Inst1' then [Bal] else 0 end),0) AS 'Inst1Bal',
        COALESCE(SUM(case when particular = 'Inst2' then [Bal] else 0 end),0) AS 'Inst2Bal',
        COALESCE(SUM(case when particular = 'Inst3' then [Bal] else 0 end),0) AS 'Inst3Bal',
        COALESCE(SUM(case when particular = 'Inst4' then [Bal] else 0 end),0) AS 'Inst4Bal',
        COALESCE(SUM(case when particular = 'Inst5' then [Bal] else 0 end),0) AS 'Inst5Bal'
FROM [Installment] INS
LEFT JOIN Customer CONS
ON INS.CustomerId = CON.Id
GROUP BY INS.CustomerId,
    CON.AccountNumber
    INS.Particular
)
SELECT Id,
    AcctNumber,
    Particular,
    CAST(Inst1Bal AS numeric(18,2))  AS 'Inst1_Balance',
    CAST(Inst2Bal AS numeric(18,2))  AS 'Inst2_Balance',
    CAST(Inst3Bal AS numeric(18,2))  AS 'Inst3_Balance',
    CAST(Inst4Bal AS numeric(18,2))  AS 'Inst4_Balance',
    CAST(Inst5Bal AS numeric(18,2))  AS 'Inst5_Balance'
FROM tmptable

На данный момент у меня есть код, который отображает данные на основе первой таблицы. Мне нужна помощь в объединении 5 столбцов балансов в один столбец, как показано во второй таблице. Можно ли это сделать с помощью JOIN?

Вы просите отредактировать запрос к первой таблице или получить вторую таблицу? I am contemplating to use UNION but I need recommendations/suggestions and have it in a single query. << Я не уверен в вопросе

User12345 21.02.2024 08:10

В соответствии с руководством по вопросам не публикуйте изображения кода, данных, сообщений об ошибках и т. д. — скопируйте или введите текст в вопрос. Пожалуйста, ограничьте использование изображений для диаграмм или демонстрации ошибок рендеринга, вещей, которые невозможно точно описать с помощью текста.

Dale K 21.02.2024 08:14

Да, в чем на самом деле ваш вопрос, у вас уже есть вопрос, делает ли он то, что вы хотите, или нет? Вы также знаете способ сделать это, например, объединиться, так что дерзайте? Как я могу вам помочь?

Dale K 21.02.2024 08:17

Хм, исходные данные, с которыми вы работаете, уже находятся в нужном вам формате, поэтому просто удалите агрегирование и сделайте из него прямой выбор? Прямо сейчас вы спрашиваете, как приготовить помидоры по рецепту пиццы.

siggemannen 21.02.2024 08:46
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш текущий запрос является сводным запросом. Похоже, вам нужна простая группа по запросу.

SELECT INS.CustomerId AS Id,
       CON.AccountNumber AS AcctNumber,
       INS.Particular AS Particular,
       SUM([Bal]) AS Balance
FROM   [Installment] INS
LEFT JOIN Customer CON
       ON INS.CustomerId = CON.Id
GROUP BY INS.CustomerId,
         CON.AccountNumber,
         INS.Particular;

подожди, твой псевдоним испорчен. Иногда это CONS, иногда CON. Замечательно, что вы исключили конкатные вещи в поле номера счета, хе-хе-хе

User12345 21.02.2024 08:53

Исправлен псевдоним. Спасибо

Squirrel 21.02.2024 09:09

Псевдоним был перепутан в исходном вопросе.

Dale K 21.02.2024 09:49

Другие вопросы по теме

Как найти в таблице присужденных призов T-SQL всех пользователей, получивших два конкретных приза?
Как создать производный атрибут из сторонней таблицы с помощью Alter Table?
СУММ с различными
Применение миграции переименования с помощью временной таблицы вызывает исключение SqlException (0x80131904), несоответствующее количеству операторов BEGIN и COMMIT
Как получить последний плюс и последний минус datetime из таблицы запасов
SQLPackage не удается войти в конвейер Azure DevOps
Динамический столбец Pivot SQL-сервер
Присоединитесь к основной таблице с таблицей истории, чтобы получить текущую ставку основной таблицы, а также последнюю и предыдущую ставку из таблицы истории
Оператор Select требует много времени для выполнения результатов для большой таблицы
Найдите соответствующие записи в нескольких столбцах для каждого значения ключа с учетом порядка сортировки