У меня к вам очень сложный вопрос
Предположим, у меня есть следующие таблицы
Таблица AccountType :
Id Type
1 Checking
2 Savings
Таблица Customer_Account :
Customer_Id Account_Type_Id
450 1
450 2
451 1
Таблица Customer_Account содержит список идентификаторов клиентов с идентификаторами их типов учетных записей. Account_Type_Id - это внешний ключ, полученный из AccountType.Id.
Предположим, что в таблице Customer_Account клиент по имени Josh (id 450) может иметь и чековый и сберегательный счета, как показано выше. Я могу вывести этого клиента с его идентификатором и типом учетной записи, например, дважды введя СЛЕВОЕ СОЕДИНЕНИЕ в таблицу AccountType :
SELECT CustAccount.Customer_Id AS Id, Account1.Type AS Account_Type_1, Account2.Type AS Account_Type_2
FROM Customer_Account CustAccount
LEFT JOIN AccountType Account1
ON Account1.Id = CustAccount.Account_Type_Id
LEFT JOIN AccountType Account2
ON Account2.Id = CustAccount.Account_Type_Id
Вывод будет:
Id Account_Type_1 Account_Type_2
450 Checking Checking
450 Savings Savings
451 Checking Checking
То, что я пытаюсь сделать, это то, что если у клиента, такого как Джош (id 450), есть оба чекового и сберегательного счета, я хочу вывести две строки данных выше в одну строку, как так:
Id Account_Type_1 Account_Type_2
450 Checking Savings
А также, если у клиента есть только один тип учетной записи (например, клиент с идентификатором 451 здесь), я хочу, чтобы в соответствующем столбце отображался только этот тип учетной записи, например:
Id Account_Type_1 Account_Type_2
451 Checking
Или, если у клиента с идентификатором 451 был только Сберегательный счет, выход должен быть:
Id Account_Type_1 Account_Type_2
451 Savings
Я хочу, чтобы «Проверка» отображалась только в Accoun_Type_1 и «Экономия» в Account_Type_2. Если я сделаю GROUP BY CustAccount.Customer_Id, я получу это:
Id Account_Type_1 Account_Type_2
450 Checking Checking
451 Checking Checking
Любая помощь от любого эксперта будет очень признательна.
Спасибо.