/ / Konwersja wielu wierszy w jeden wiersz z wieloma kolumnami - sql, ms-access

Konwersja wielu wierszy w jeden wiersz z wieloma kolumnami - sql, ms-access

Mam tabelę, która ma wiele wierszy dlaodrębny identyfikator CARD_ID z różnymi rolami przypisanymi do tego identyfikatora CARD_ID. Chciałbym mieć zapytanie, które tworzy pojedynczy wiersz dla każdego odrębnego CARD_ID, który ma wiele kolumn z listą różnych ról (patrz obraz na przykład bieżącej tabeli) Podświetlone są duplikaty.

wprowadź opis obrazu tutaj

Tak więc, chciałbym jeden wiersz dla CARD_ID 1-10, z kolumnami w każdym wierszu dla Posiadacza karty, Pojednania i Zatwierdzającego.

Jeśli dany CARD_ID nie ma jednej z tych ról, jestem w porządku z tym, że pole jest puste lub ma jakiś inny rodzaj wskaźnika.

Odpowiedzi:

0 dla odpowiedzi № 1

Jedna metoda i agregacja warunkowa:

select card_id,
max(iif(role = "Reconciler", col, NULL)) as reconciler_col,
max(iif(role = "Approver", col, NULL)) as approver_col,
max(iif(role = "Cardholder", col, NULL)) as cardholder_col
from t
group by card_id;

col jest kolumną, którą chcesz przestawić. Możesz dodać więcej niż jedną kolumnę, po prostu dodając więcej max(iif . . .) do select.