2017-02-10 27 views
0

下面的代码包含两个与存档表中的外键绑定的左连接。我试图创建一个报告,我可以将“FilledBy”拆分为单独的列,如图像。 'FilledBy'包含Docline,OCLC和In House等类别,并且报告按每个部门对Journal Title进行分组。使用左连接拆分多个计数以用于报表使用DLookup

enter image description here

,对于表中提取数据的查询使用以下代码。 FilledBy是数据分组的方式之一。如果我使用按报告功能分组的访问权限将其分解为FilledBy类别,则无法将所有内容保留在一行中。 (如果有任何方法,请告诉我!)它希望将这些类别作为另一列放置,这对于此报告而言效率不高。

SELECT Count(ArchiveTable.ArchiveID) AS TotalRQ, ArchiveTable.ISSN, _ 
     PatronDatabase.Department, JournalTable.JournalTitle, ArchiveTable.FilledBy 
FROM (ArchiveTable _ 
LEFT JOIN PatronDatabase ON ArchiveTable.PatronID = PatronDatabase.PatronID) _ 
LEFT JOIN JournalTable ON ArchiveTable.ISSN = JournalTable.ISSN 
WHERE (((DatePart("yyyy",[RequestDate]))=2016) AND ((PatronDatabase.PatronType)="Staff") _ 
AND ((ArchiveTable.FolderStatus)="Filled")) 
GROUP BY ArchiveTable.ISSN, PatronDatabase.Department, JournalTable.JournalTitle, _ 
     ArchiveTable.FilledBy; 

有没有办法让小计填写?我在报告中的未绑定字段中尝试了DLookup。它给了我一大堆1。

= DLookup("[TotalRQ]", "QryJournalRQbyDept", "ISSN = " & Reports![NRpt]![ISSN] _ 
AND "Department = " & Reports![NRpt]![Department] _ 
AND "FilledBy = OCLC") 
+0

“'FilledBy'有什么类别Docline,OCLC和In House”是什么意思? FilledBy似乎是ArchiveTable的一列。你的意思是,FilledBy可以具有“Docline”,“OCLC”或“内部”的值? – Ami44

+0

是的,这是正确的。值可以有这三个结果,Docline,OCLC或内部的 – Stardance

+0

可能使用'iif(FilledBy ='Docline',1,0)'类型的语法,然后在报告中总结该字段? – GavinP

回答

0

我想通了。

我创建了三个新的查询(每个类别一个,Docline,OCLC,In House),计算按部门和ISSN分组的小计。

然后,我创建了第四个查询,使用此代码将结果串在一起。我已经取代以“A”,“B”,“C”的实际查询名称澄清:

SELECT DISTINCT a.ISSN, a.JournalTitle, a.Department, 
    (SELECT SUM(DoclineRQ) FROM b WHERE a.ISSN = b.ISSN _ 
     AND a.Department = b.Department) AS DoclineTotal, _ 
    (SELECT SUM(OCLCRQ) FROM c WHERE a.ISSN = c.ISSN _ 
     AND a.Department = c.Department) AS OCLCTotal, _ 
    (SELECT SUM(InHouseRQ) FROM d WHERE a.ISSN = d.ISSN _ 
     AND a.Department = d.Department) AS DocDelTotal, _ 
    Nz([DoclineTotal])+Nz([OCLCTotal])+Nz([InHouseTotal]) AS TotalRQ 
    FROM a; 

现在我可以配合报告的最终查询,它会工作。

感谢Boyd P,他回答了我在9个月前为代码的整体结构提出的类似问题。我意识到我可以添加额外的标准(AND语句),并将其更改为SUM并且它可以工作。