我希望在通过查询合并Microsoft Access上的数据方面获得一些帮助。目前,我收到一个包含许多记录的数据转储。这些记录中的大多数是针对相同的工作,即,相同的工作id。我想把它们合并成一行。这个是可能的吗?
输入:
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输出:
jobid jobdescription processdescription processcreateddate processdesc2 Proccreatedate2
1234 Compliance Accept 03/04/2014 10:32 Hold 03/07/2014 14:04等等。
谢谢,
瑞克
发布于 2015-10-20 01:48:29
在我看来,每个流程描述实际上都应该是数据库中的一个字段名。
然后,每个流程描述都应该包含日期。
作业ID--作业
1234----Compliance------01/10/14-----01/11/14---01/12/14-----01/01/15
发布于 2015-10-20 02:35:42
从本质上讲,您需要一个查询来将行转置为列,或者从长到宽重塑。
考虑以下包含嵌套在聚合查询中的子查询和派生表的查询。内部查询计算每个jobid的进程数,然后外部查询使用计算的计数按jobid和jobdescription有条件地聚合:
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;输出
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 AMhttps://stackoverflow.com/questions/23875681
复制相似问题