簡體   English   中英

具有計算字段的自聯接SQL查詢(使用MS Access)

[英]Self Joining SQL Query with a Calculated Field (Using MS Access)

我有一個表(tblMembers),其中包含計划成員的個人人口統計信息。 我需要找出表中是否有分配給多個人員的員工ID。 我覺得有一個簡單的方法可以做到這一點,但我正在努力。 我試圖創建一個自我聯接查詢,將Employee_ID字段上的tblMembers聯接起來。 在該查詢中,我有一個計算所得的字段,該字段將成員的名字和姓氏連接在一起。 下面是我嘗試過的操作,沒有當前字段可以區分每個成員(例如SSN),因此我需要創建一個計算字段。 該SQL無法正常工作,因為它要求我提供AFirst和BFirst的值。 另外請注意,我正在MS Access中編寫此代碼。

SELECT A.BENEFIT_PERIOD, 
A.BENEFIT_TYPE, 
A.PLAN_NAME, 
A.PERSON_TYPE, 
A.LAST_NAME, 
A.FIRST_NAME, 
A.MIDDLE_NAME, 
A.SUFFIX, 
A.MARITAL_STATUS, 
A.RETIRED, 
A.HOURS_WORKED, 
A.GENDER, 
A.COVERAGE, 
A,EMPLOYEE_ID
A.TOTAL_MONTHLY_COST, 
A.PENDING_STATUS, 
A.FIRST_NAME & A.LAST_NAME AS AFirstLast, 
B.FIRST_NAME & B.LAST_NAME AS BFirstLast
FROM [Benefit Detail Report] AS A INNER JOIN [Benefit Detail Report] AS B ON A.[EMPLOYEE_ID] = B.[EMPLOYEE_ID]
WHERE AFirstLast <> BFirstLast;

在帶有WHERE子句中,您應該重復計算:

WHERE (A.FIRST_NAME & A.LAST_NAME) <> (B.FIRST_NAME & B.LAST_NAME)

此外,您還有多個印刷錯誤:

A,EMPLOYEE_ID的逗號應為點號,並且末尾缺少逗號(應為A.EMPLOYEE_ID,

您不能在WHERE子句中使用別名。 實際上,我看不到需要使用WHERE子句。 您可以使用:

SELECT A.BENEFIT_PERIOD, 
A.BENEFIT_TYPE, 
A.PLAN_NAME, 
A.PERSON_TYPE, 
A.LAST_NAME, 
A.FIRST_NAME, 
A.MIDDLE_NAME, 
A.SUFFIX, 
A.MARITAL_STATUS, 
A.RETIRED, 
A.HOURS_WORKED, 
A.GENDER, 
A.COVERAGE, 
A.EMPLOYEE_ID
A.TOTAL_MONTHLY_COST, 
A.PENDING_STATUS, 
A.FIRST_NAME & A.LAST_NAME AS AFirstLast, 
B.FIRST_NAME & B.LAST_NAME AS BFirstLast
FROM [Benefit Detail Report] AS A INNER JOIN [Benefit Detail Report] AS B ON A.[EMPLOYEE_ID] = B.[EMPLOYEE_ID]
and (A.FIRST_NAME <> B.FIRST_NAME or A.LAST_NAME <> B.LAST_NAME);

暫無
暫無

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

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