Vba IIF和MS ACCESS 2010

Vba IIF和MS ACCESS 2010,vba,ms-access,Vba,Ms Access,这个代码一直困扰着我,我有两个培训课程,我正试图找到哪个员工参加过这些课程的记录,代码是: SELECT O896IA_VEMPPRSA.EMP_NA, O867IA_VTRAING.SYS_EMP_ID_NR, O867IA_VTRAING.REG_NR, O867IA_VTRAING.DIS_NR, O867IA_VTRAING.TNG_SYS_NR FROM O896IA_VEMPPRSA INNER JOIN O867IA_VTRAING ON O896IA_VEMPPRSA.

这个代码一直困扰着我,我有两个培训课程,我正试图找到哪个员工参加过这些课程的记录,代码是:

SELECT O896IA_VEMPPRSA.EMP_NA, O867IA_VTRAING.SYS_EMP_ID_NR, O867IA_VTRAING.REG_NR,     
O867IA_VTRAING.DIS_NR, O867IA_VTRAING.TNG_SYS_NR
FROM O896IA_VEMPPRSA INNER JOIN O867IA_VTRAING ON O896IA_VEMPPRSA.SYS_EMP_ID_NR =     
O867IA_VTRAING.SYS_EMP_ID_NR
WHERE (((O896IA_VEMPPRSA.EMP_EMT_STS_CD)<>"T"))
GROUP BY O896IA_VEMPPRSA.EMP_NA, O867IA_VTRAING.SYS_EMP_ID_NR, O867IA_VTRAING.REG_NR,     
O867IA_VTRAING.DIS_NR, O867IA_VTRAING.TNG_SYS_NR;

您应该能够使用
IIF()
获得计算结果:

IIF(O867IA_VTRAING.TNG_SYS_NR IN (1095, 1743), 'Y', 'N') 
因此,如果您将其添加到查询中,它将是:

SELECT DISTINCT O896IA_VEMPPRSA.EMP_NA, 
    O867IA_VTRAING.SYS_EMP_ID_NR, 
    O867IA_VTRAING.REG_NR,     
    O867IA_VTRAING.DIS_NR, 
    IIF(O867IA_VTRAING.TNG_SYS_NR IN (1095, 1743), 'Y', 'N') 
FROM O896IA_VEMPPRSA 
INNER JOIN O867IA_VTRAING 
    ON O896IA_VEMPPRSA.SYS_EMP_ID_NR = O867IA_VTRAING.SYS_EMP_ID_NR
WHERE (((O896IA_VEMPPRSA.EMP_EMT_STS_CD)<>"T"));

我想你正在寻找一个
左连接
和一个
案例当…然后…结束
MS Access SQL不支持
案例当
@user2119980你说每个课程都需要一个专栏是什么意思?您需要为
1095
值和
1743
值单独设置一列。如果是这种情况,那么您将只在
IIF
中使用一个值,并创建两个计算列。@user2119980查询使用的是
DISTINCT
,如果您得到的是重复项,那么这意味着您在每列中都有不同的值。差异是Y和N。1095 Y 1743 N和1095 N 1743 N的员工有一个Y@user2119980请用一些示例数据和所需结果编辑您的原始帖子。
SELECT DISTINCT O896IA_VEMPPRSA.EMP_NA, 
    O867IA_VTRAING.SYS_EMP_ID_NR, 
    O867IA_VTRAING.REG_NR,     
    O867IA_VTRAING.DIS_NR, 
    IIF(O867IA_VTRAING.TNG_SYS_NR IN (1095, 1743), 'Y', 'N') 
FROM O896IA_VEMPPRSA 
INNER JOIN O867IA_VTRAING 
    ON O896IA_VEMPPRSA.SYS_EMP_ID_NR = O867IA_VTRAING.SYS_EMP_ID_NR
WHERE (((O896IA_VEMPPRSA.EMP_EMT_STS_CD)<>"T"));
SELECT O896IA_VEMPPRSA.EMP_NA, 
  O867IA_VTRAING.REG_NR, 
  O867IA_VTRAING.DIS_NR,
  max(IIF(O867IA_VTRAING.TNG_SYS_NR IN (1095), 'Y', 'N')) as Class1095 ,
  Max(IIF(O867IA_VTRAING.TNG_SYS_NR IN (1743), 'Y', 'N'))  as Class1743
FROM O896IA_VEMPPRSA 
INNER JOIN O867IA_VTRAING 
  ON O896IA_VEMPPRSA.SYS_EMP_ID_NR = O867IA_VTRAING.SYS_EMP_ID_NR
group by O896IA_VEMPPRSA.EMP_NA, O867IA_VTRAING.REG_NR, O867IA_VTRAING.DIS_NR