次の列を持つSQLクエリでこの問題を解決しようとしています: ITEM NUMBERおよびCROSS_REFFERENCE。 ITEM NUMBERは複数のCROSS_REFFERENCEの値を持つことができます。私が必要とするのは、グループ化して式で数えることでできることを数えることです。しかし、もう一つ必要なのは、ITEM NUMBERにMULTIを返すより複数のCROSS_REFFERENCEがある場合は文、それ以外の場合はITEM NUMBERに結び付けられたCROSS_REFFERENCEの単一の値を返すという文です。 は、私は新しいcoulmnとしてこの式をusexしようとした:SELECT句の条件としてSQL集計結果を使用する
MFG: IIf(Count([CROSS_REFERENCE])>1,"MULTI",[CROSS_REFERENCE])
しかし、私の結果を返しますが、私は、エーテルMULTIと項目番号のユニークなリストを取得いけない、またはCROSS_REFERENCEの値とき。
何が間違っているのですか?
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;
このようなことは起こりません。 'count()'は集約関数であり、その結果は行レベルでは利用できません。 count()は、すべての行が処理され/考慮されたときにのみ使用可能な値を持ちます。行レベルでフィルタリングするためにcount()を使用することはできません。なぜなら、その結果はSQLサーバが時間を遡ることができなくなるまで利用できないからです。 –
また、CROSS_REFERENCEを数えたい場合は、SELECT句とGROUP BY句の両方から 'tbl_MFG_XREF.CROSS_REFERENCE'を削除する必要があります。 – Andre