将sql查询多个记录访问到单个记录
我有一个名为testdb的MS-Access数据库,表名为table1 该表有两个字段BinNo和Prodcode BinNo有许多重复的行,我想将BinNo分组到任何有重复行的地方,以创建新的别名列,如单个记录 鉴于以下数据:将sql查询多个记录访问到单个记录,sql,ms-access,Sql,Ms Access,我有一个名为testdb的MS-Access数据库,表名为table1 该表有两个字段BinNo和Prodcode BinNo有许多重复的行,我想将BinNo分组到任何有重复行的地方,以创建新的别名列,如单个记录 鉴于以下数据: +---------+----------+ | BinNo | Prodcode | +---------+----------+ | Bin no1 | Pro 1 | | Bin no1 | Pro 2 | | Bin no1 | Pr
+---------+----------+
| BinNo | Prodcode |
+---------+----------+
| Bin no1 | Pro 1 |
| Bin no1 | Pro 2 |
| Bin no1 | Pro 3 |
| Bin no2 | Pro 4 |
| Bin no2 | Pro 5 |
+---------+----------+
以下是期望的结果:
+---------+-----------+-----------+-----------+
| BinNo | Prodcode1 | Prodcode2 | Prodcode3 |
+---------+-----------+-----------+-----------+
| Bin no1 | Pro 1 | Pro 2 | Pro 3 |
| Bin no2 | Pro 4 | Pro 5 | |
+---------+-----------+-----------+-----------+
这回答了问题的原始版本 在MS Access中,这真的很痛苦。您可以使用条件聚合来实现这一点。这里有一种方法:
select t1.binno,
max(iif(seqnum = 1, prodcode, null)) as prodcode_1,
max(iif(seqnum = 2, prodcode, null)) as prodcode_2,
max(iif(seqnum = 3, prodcode, null)) as prodcode_3
from (select t1.*,
(select count(*)
from table1 as tt1
where tt1.binno = t1.binno and tt1.prodcode <= t1.prodcode
) as seqnum
from table1 as t1
) as t1
group by t1.binno;
子查询基本上实现了行数,这在MS Access中不可用。亲爱的Gordon Linoff可能重复,请您阅读我的新问题……关于相同的问题problem@SatigerB . . . 新问题应作为问题提出,而不是作为对已回答问题的编辑。