簡體   English   中英

創建報表,報表中重復 output, Ms Access SQL

[英]Creating Report, repetition in report output, Ms Access SQL

SELECT NMC.*, Exam.Final_Exam_Level
FROM 
    (SELECT Technicians.Technician_ID AS Technician_ID, 
    Technicians.First_Name AS First_Name, 
    Technicians.Surname AS Surname, 
    MAX(New_Models.Date_Issued) AS Last_Course_Date, 
    MAX(New_Models.Issue) AS Last_Issue, 
    MAX(New_Models.Model_ID) AS Last_Model_ID, 
    Technicians.Course_Level AS No_Training_Courses 
    FROM New_Models, New_Models_Allocation, Technicians 
    WHERE New_Models.Model_ID=New_models_Allocation.Model_ID 
    And Technicians.Technician_ID=New_Models_Allocation.Technician_ID 
    GROUP BY Technicians.Technician_ID, Technicians.Course_Level, First_Name, Surname 
    ORDER BY MAX(New_Models.Model_ID) DESC) 
AS NMC 
INNER JOIN (SELECT Technicians.Technician_ID, COUNT(*) AS Final_Exam_Level 
    FROM Technicians, Exams, Exam_Allocation 
    WHERE (Technicians.Technician_ID)=Exam_Allocation.Technician_ID 
    And ((Exams.Exam_ID)=Exam_Allocation.Exam_ID) 
    And (Exams.Date_Taken)<=#12/31/2010# 
    GROUP BY Technicians.Technician_ID, Technicians.Course_Level 
    ORDER BY Technicians.Technician_ID)  
AS Exam ON Exam.Technician_ID=NMC.Technician_ID;

此查詢顯示每個技術人員、上次考試、上次 New_Model、上次課程。

SELECT Technicians.Technician_ID, Jobs.Job_ID, Jobs.Date_Occured, Fix
FROM Technicians, Jobs, Tech_Allocation, Recovery
WHERE Technicians.Technician_ID=Tech_Allocation.Technician_ID 
And Jobs.Job_ID=Tech_Allocation.Job_ID 
And Jobs.Job_ID=Recovery.Job_ID 
And Jobs.Date_Occured>=#1/1/2010# 
And Jobs.Date_Occured<=#12/31/2010#
ORDER BY Fix;

此查詢顯示每個技術人員已完成的工作。

但是,在 Ms Access 中創建報告時,作業會重復。 因此,例如,它顯示了 12 個,而不是一個技術人員完成了 3 個工作。 盡管在運行第二個查詢本身時,結果不會重復。

有什么幫助嗎?

出於顯而易見的原因,我通常不閱讀其他人的 SQL 查詢,但您的示例格式非常好。 這是問題嗎?

INNER JOIN (SELECT Technicians.Technician_ID, COUNT(*) AS Final_Exam_Level
    ...
    GROUP BY Technicians.Technician_ID, Technicians.Course_Level 

這兩行來自您的第一個查詢的第二個子查詢。 您有 1 個索引字段(Technician_ID),但有 2 個分組字段(Technician_ID 和 Course_Level)。 這將產生如下結果:

 Technician_ID Final_Exam_Level
 Bob           5
 Bob           4
 Nadine        5

我建議從 Group By 中刪除 Course_Level 或將其添加到 Select 行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM