2017-02-10 4 views
0

Код ниже содержит два левых соединения, привязанных к внешним ключам в архивной таблице. Я пытаюсь создать отчет, в котором я могу «FilledBy» разделить как отдельные столбцы, подобные этому изображению. «FilledBy» имеет категории Docline, OCLC и In House, а отчет группирует заголовки журналов каждым отделом.Разделение нескольких счетчиков с левыми соединениями для использования отчета DLookup

enter image description here

Запрос, который извлекает данные для таблицы используется следующий код. FilledBy - один из способов группировки данных. Если я использую Access, сгруппированный по функции отчета, чтобы разбить его на категории 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» или «In House»? – Ami44

+0

Да, это правильно. Значения могут иметь эти три результата, Docline, OCLC или В доме – Stardance

+0

, возможно, использовать синтаксис типа 'iif (FilledBy = 'Docline', 1,0)', а затем суммировать это поле в отчете? – GavinP

ответ

0

Я понял.

Я создал три новых запроса (по одному для каждой категории, Docline, OCLC, In House), которые рассчитали промежуточные итоги, сгруппированные Департаментом и ISSN.

Затем я создал четвертый запрос, используя этот код, чтобы свести результаты вместе. Я подставлены фактические имена запросов с «а», «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, и он сработал.

 Смежные вопросы

  • Нет связанных вопросов^_^