选择其他数据/值以在查询或表单中显示为列

问题描述

我有一个员工索引,我需要对每个员工进行查询,并将其输出与原始员工一起显示

因此,假设员工索引具有ID,批次,状态以及其他多个列。我有一张表,每当员工索引中的列发生更改时,我都会跟踪该表。我想在原始员工行旁边显示某些列与其他值相等时的日期,并在以后导出日期。

自然地,我尝试创建一个表单以显示多个值,添加一个文本框来保存我的额外信息,并更改了VBA中每个Form_Current事件的文本框的值。

Private Sub Form_Current()
    Me.txtPhaSEOne = SimpleLookup("SELECT TOP 1 ChangeDate FROM EmployeeVariables WHERE VariableName = ""Batch"" AND EmployeeID = " & Me.Recordset("ID Number") & " ORDER BY ChangeDate ASC","ChangeDate")
End Sub

起初似乎很有效...

first example

直到我意识到日期被设置为当前记录的日期 [

second example3

所以我尝试了加入:

SELECT
  EmployeeIndex.[ID Number],EmployeeIndex.Batch,EmployeeIndex.Status,EmployeeIndex.[First name],EmployeeIndex.[Last name],EVA.ChangeDate as Phase1
FROM
  EmployeeIndex
  (SELECT TOP 1 ChangeDate FROM EmployeeVariables WHERE EmployeeID = EmployeeIndex.[ID Number] ORDER BY CHangeDate) EVA

如果我可以预取EmployeeIndex.[ID Number],可以使用哪种方法。 (我没有为这些专栏命名)除了我没有丝毫线索而且我正在冒烟。

SELECT
  EmployeeIndex.[ID Number],EVA.ChangeDate as Phase1
FROM
  EmployeeIndex
INNER JOIN
  (SELECT TOP 1 EmployeeID,ChangeDate FROM EmployeeVariables WHERE ORDER BY ChangeDate) EVA
    ON EmployeeIndex.[ID Number] = EVA.EmployeeID

解决方法

Cross Apply非常适合您的TOP 1案例,因为它将针对每个employeeID运行,而不是仅加入1

,

尝试使用子查询:

SELECT
    EmployeeIndex.[ID Number],EmployeeIndex.Batch,EmployeeIndex.Status,EmployeeIndex.[First name],EmployeeIndex.[Last name],(SELECT Max(EVA.ChangeDate)
        FROM EmployeeVariables AS EVA
        WHERE EVA.EmployeeID = EmployeeIndex.[ID Number]) AS Phase1
FROM
    EmployeeIndex