0

以下 MS Access 2010 查询仅输出 FirstName、HomePhone 和 ClientNumber 的值。它没有为 LastName 输出任何值。

谁能告诉我如何更改它以便它也输出 LastName 的值?

SELECT
  ActiveCustomers.FirstName
, ActiveCustomers.LastName
, tblClientAddress.HomePhone
, ActiveCustomers.ClientNumber
FROM (
  SELECT
    Clients.ClientNumber
  , Clients.FirstName
  , Clients.LastName (
      SELECT COUNT(ReferralDate) FROM IntakeTable 
      WHERE Clients.ClientNumber = IntakeTable.ClientNumber
      AND Len(ReferralDate & '') > 0
    ) AS IntakeCount
  , (
    SELECT COUNT(ExitDate)
    FROM ExitTable
    WHERE Clients.ClientNumber = ExitTable.ClientNumber
    AND Len(ExitDate & '') > 0
  ) AS ExitCount
  FROM Clients
) AS ActiveCustomers
INNER JOIN tblClientAddress
ON ActiveCustomers.ClientNumber = tblClientAddress.ClientNumber
WHERE ActiveCustomers.IntakeCount > [ExitCount]
AND tblClientAddress.CurrentResidence = True;
4

1 回答 1

2

您似乎在 . 之后缺少一个逗号Clients.LastName。尝试:

SELECT ActiveCustomers.FirstName, ActiveCustomers.LastName, tblClientAddress.HomePhone, ActiveCustomers.ClientNumber
FROM 
       (SELECT Clients.ClientNumber, 
               Clients.FirstName, 
               Clients.LastName,
               (SELECT COUNT(ReferralDate) FROM IntakeTable WHERE Clients.ClientNumber = IntakeTable.ClientNumber AND Len(ReferralDate & '') > 0) AS IntakeCount,
               (SELECT COUNT(ExitDate) FROM ExitTable WHERE Clients.ClientNumber = ExitTable.ClientNumber AND Len(ExitDate & '') > 0) AS ExitCount 
        FROM Clients) AS ActiveCustomers
INNER JOIN tblClientAddress ON ActiveCustomers.ClientNumber = tblClientAddress.ClientNumber 
WHERE (((ActiveCustomers.IntakeCount)>[ExitCount]) AND 
       ((tblClientAddress.CurrentResidence)=True));

编辑:

似乎很可能是:

  • 您在 和 之间具有多对一(或一对多)关系ClientstblClientAddress并且在“多”端有两条记录。如果您收到重复记录,您可以添加 aDISTINCT或 a GROUP BY

和/或:

  • (SELECT COUNT(查询以某种方式弄乱了它们的父查询,并且需要进行修改,以便它们可以使用 进入其父查询的FROM子句Inner Join,例如:

    (SELECT ClientNumber, COUNT(ReferralDate) as IntakeCount FROM IntakeTable WHERE Len(ReferralDate & '') > 0 GROUP BY ClientNumber) AS qryIntakeCount

于 2013-10-14T23:27:46.007 回答