将多行转换为具有多列的单行

时间:2018-02-22 21:51:31

标签: sql ms-access

我有一个表有多个行,用于列出分配给该CARD_ID的不同角色的不同CARD_ID。我想要一个查询为每个不同的CARD_ID创建一行,该CARD_ID有多列列出不同的角色。参见图像,例如当前表格。重复突出显示。

enter image description here

所以,我想为CARD_ID 1-10提供一行,每一行都有Cardholder,Reconciler和Approver。

如果特定的CARD_ID没有其中一个角色,我可以将该字段设为null或使用其他类型的指示符。

1 个答案:

答案 0 :(得分:0)

有条件聚合的一种方法:

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是您想要转动的列。您只需向max(iif . . .)添加更多select即可添加多个列。