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.
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 № 1Jedna 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
.