我如何 Select 不同列中的第一个、第二个和第三个值 - Ms Access

How can I Select 1st, 2nd and 3rd values in different columns - Ms Access

我在 table 中有此数据:

 ID     ItemID    ItemSupplier
 1        1           E
 2        2           E
 3        2           B
 4        3           B
 5        4           B
 6        4           E
 7        4           C
 8        5         'NULL'
 9        6           C

我想写一个查询 select 这样:

ItemID    Supplier1    Supplier2    Supplier3 
  1           E
  2           E            B
  3           B
  4           B            E            C
  5           
  6           C

但我只能通过 :

获取第一列
SELECT ItemID, FIRST(ItemSupplier) AS Supplier1
FROM myTable GROUP BY ItemID

谢谢

MS Access 不是最好的工具。

一种方法使用相关子查询来枚举值,然后进行条件聚合:

select itemid,
       max(iif(seqnum = 1, itemsupplier, null)) as supplier_1,
       max(iif(seqnum = 2, itemsupplier, null)) as supplier_2,
       max(iif(seqnum = 3, itemsupplier, null)) as supplier_3
from (select t.*,
             (select count(*)
              from t as t2
              where t2.itemid = t.itemid and t2.id <= t.id
             ) as seqnum
      from t
     ) as t
group by itemid;

几乎任何其他数据库都支持 window 函数,这将使它更加高效。