Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将sql查询多个记录访问到单个记录_Sql_Ms Access - Fatal编程技术网

将sql查询多个记录访问到单个记录

将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

我有一个名为testdb的MS-Access数据库,表名为table1

该表有两个字段BinNo和Prodcode

BinNo有许多重复的行,我想将BinNo分组到任何有重复行的地方,以创建新的别名列,如单个记录

鉴于以下数据:

 +---------+----------+
 |  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 . . . 新问题应作为问题提出,而不是作为对已回答问题的编辑。