使用SQL聚合结果作为SELECT子句中的条件

时间:2016-06-29 20:55:29

标签: sql ms-access ms-access-2010

我正在尝试使用SQL查询解决问题,其中我有下一列: 项目编号和CROSS_REFFERENCE。 ITEM NUMBER可以有多个CROSS_REFFERENCE值,我需要的是计算它们,我可以通过分组和按表达式计算。但我需要的另一件事是声明,如果ITEM NUMBER有多个CROSS_REFFERENCE而不是返回MULTI,否则返回与ITEM NUMBER绑定的单个CROSS_REFFERENCE值。 我试图将这个表达用作新的coulmn:

MFG: IIf(Count([CROSS_REFERENCE])>1,"MULTI",[CROSS_REFERENCE])

但是当我的结果返回时,我没有使用ether MULTI获得ITEM NUMBER的唯一列表,或CROSS_REFERENCE的值。

知道我做错了什么?

Query design

SELECT 
tbl_MFG_XREF.[ITEM NUMBER], 
tbl_MFG_XREF.CROSS_REFERENCE, 
Count(tbl_MFG_XREF.CROSS_REFERENCE) AS CountOfCROSS_REFERENCE, 
IIf(Count([CROSS_REFERENCE])>1,"MULTI",[CROSS_REFERENCE]) AS MFG
FROM 
tbl_MFG_XREF
GROUP BY 
tbl_MFG_XREF.[ITEM NUMBER], tbl_MFG_XREF.CROSS_REFERENCE;

1 个答案:

答案 0 :(得分:0)

您需要一个基本查询:

SELECT 
  [ITEM NUMBER], 
  Count(CROSS_REFERENCE) AS CountOfCROSS_REFERENCE,
  First(CROSS_REFERENCE) AS FirstCROSS_REFERENCE
FROM 
  tbl_MFG_XREF
GROUP BY 
  tbl_MFG_XREF.[ITEM NUMBER];

您也可以使用Last或Min或Max代替FirstFirstCROSS_REFERENCE仅在项目只有一个CROSS_REFERENCE时使用。

将此查询保存为例如qryItemCountCrossref

第二个使用它作为输入的查询,例如

SELECT 
  [ITEM NUMBER], 
  CountOfCROSS_REFERENCE, 
  IIf(CountOfCROSS_REFERENCE > 1, "MULTI", FirstCROSS_REFERENCE) AS MFG
FROM qryItemCountCrossref