首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft Access行合并

Microsoft Access行合并
EN

Stack Overflow用户
提问于 2014-05-27 02:11:31
回答 2查看 77关注 0票数 0

我希望在通过查询合并Microsoft Access上的数据方面获得一些帮助。目前,我收到一个包含许多记录的数据转储。这些记录中的大多数是针对相同的工作,即,相同的工作id。我想把它们合并成一行。这个是可能的吗?

输入:

代码语言:javascript
复制
jobid   jobdescription  processid   processdescription  processcreateddate
1234    Compliance  124               Accept              03/04/2014 10:32
1234    Compliance  135                Hold           03/07/2014 14:04
1234    Compliance  164                Review             03/04/2014 10:33
1234    Compliance  178               Complete             03/11/2014 8:21

输出:

代码语言:javascript
复制
jobid   jobdescription processdescription processcreateddate processdesc2  Proccreatedate2
1234    Compliance      Accept             03/04/2014 10:32    Hold       03/07/2014 14:04

等等。

谢谢,

瑞克

EN

回答 2

Stack Overflow用户

发布于 2015-10-20 01:48:29

在我看来,每个流程描述实际上都应该是数据库中的一个字段名。

然后,每个流程描述都应该包含日期。

作业ID--作业

1234----Compliance------01/10/14-----01/11/14---01/12/14-----01/01/15

票数 0
EN

Stack Overflow用户

发布于 2015-10-20 02:35:42

从本质上讲,您需要一个查询来将行转置为列,或者从长到宽重塑。

考虑以下包含嵌套在聚合查询中的子查询和派生表的查询。内部查询计算每个jobid的进程数,然后外部查询使用计算的计数按jobidjobdescription有条件地聚合:

代码语言:javascript
复制
SELECT jobid, jobdescription,    
       Max(IIF(processcount=1, pdesc, NULL)) As processdesc1,
       Max(IIF(processcount=1, pdate, NULL)) As prcoesscreateddate1,
       Max(IIF(processcount=2, pdesc, NULL)) As processdesc2,
       Max(IIF(processcount=2, pdate, NULL)) As processcreateddate2,
       Max(IIF(processcount=3, pdesc, NULL)) As processdesc3,
       Max(IIF(processcount=3, pdate, NULL)) As processcreateddate3,
       Max(IIF(processcount=4, pdesc, NULL)) As processdesc4,
       Max(IIF(processcount=4, pdate, NULL)) As processcreateddate4

FROM
       (SELECT t1.jobid, t1.jobdescription, t1.processid As pid,
               t1.processdescription As pdesc, t1.processcreatedate As pdate,
               (SELECT Count(*) FROM Processes t2 
                WHERE t1.jobid=t2.jobid AND t1.processcreatedate >= t2.processcreatedate) 
                As processcount
        FROM processes_dump t1) As derivedTable

GROUP BY t1.jobid, jobdescription;

输出

代码语言:javascript
复制
jobid   jobdescription  processdesc1    prcoesscreateddate1   processdesc2  processcreateddate2  processdesc3   processcreateddate3 processdesc4    processcreateddate4
1234       Compliance        Access     3/4/2014 10:32:00 AM       Review   3/4/2014 10:33:00 AM        Hold    3/7/2014 2:04:00 PM     Complete    3/11/2014 8:21:00 AM
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23875681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档