Как я могу избежать этого Access SQL Kludge? - PullRequest
1 голос
/ 10 мая 2011

Цель состоит в том, чтобы вернуть информацию из последнего задания для каждого «права». Если есть два назначения с одной и той же датой, по-прежнему возвращается только одна строка для каждого «права», при этом выбранное назначение является произвольным.

Текущий метод:

qCurrentAssignment_sub:

SELECT tblAssignment.EligibilityID, Max(DateAdd("s",[AssignmentID] Mod 10000,[AssignmentDate])) AS DatePlusIDMod10000
FROM tblAssignment
GROUP BY tblAssignment.EligibilityID;

qCurrentAssignment:

SELECT tblAssignment.AssignedTo, tblAssignment.AssignedBy, tblAssignment.Method, tblAssignment.AssignmentDate
FROM qCurrentAssignment_sub INNER JOIN tblAssignment ON 
    (qCurrentAssignment_sub.EligibilityID = tblAssignment.EligibilityID) AND 
    (qCurrentAssignment_sub.DatePlusIDMod10000 = DateAdd("s",[AssignmentID] Mod 10000,[AssignmentDate]));

1 Ответ

1 голос
/ 10 мая 2011

Обновлено из комментария

Если дано

  • несколько назначений для каждого назначения
  • вы хотите, чтобы assignmentid был связан с max assignmentDate
  • Если для max (assignmentDate) существует более одного assignmentid, то вы хотите, чтобы max assignmentid

Измените qCurrentAssignment_sub на

qCurrentAssignment_sub

  SELECT
        eligibilityid,
        MAX(assignmentid) assignmentid

    FROM
        tblassignment 
        INNER JOIN 
        (SELECT tblassignment.eligibilityid, 
               MAX(AssignmentDate) AssignmentDate 
        FROM   tblassignment 
        GROUP  BY tblassignment.eligibilityid) maxAssignmentDate
        ON tblassignment.eligibilityid = maxAssignmentDate.eligibilityid
           and maxAssignmentDate.AssignmentDate = maxAssignmentDate.AssignmentDate
    GROUP BY 
        eligibilityid

Затем присоединитесь к tblassignment по assignmentid. Это также делает соединение немного чище

qCurrentAssignment

SELECT tblassignment.assignedto, 
       tblassignment.assignedby, 
       tblassignment.method, 
       tblassignment.assignmentdate 
FROM   tblassignment 
       INNER JOIN qcurrentassignment_sub 
         ON tblassignment.assignmentid = qcurrentassignment_sub.assignmentid 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...