다음 열이있는 SQL 쿼리에서이 문제를 해결하려고합니다 : ITEM NUMBER 및 CROSS_REFFERENCE. ITEM NUMBER에는 CROSS_REFFERENCE의 값이 여러 개있을 수 있으며 필요한 것은 그룹화하고 표현식으로 계산하여 계산할 수 있습니다. 하지만 필요한 또 다른 사항은 ITEM NUMBER에 MULTI를 반환하는 것보다 CROSS_REFFERENCE가 두 개 이상있는 경우, 그렇지 않으면 ITEM NUMBER에 연결된 CROSS_REFFERENCE의 단일 값을 반환하는 경우입니다. 나는 새로운 coulmn로이 식을 usex하려고 :SQL 집계 결과를 SELECT 절의 조건으로 사용
MFG: IIf(Count([CROSS_REFERENCE])>1,"MULTI",[CROSS_REFERENCE])
하지만 내 결과를 반환 내가 에테르 MULTI와 항목 번호의 고유 한 목록을 해달라고, 또는 CROSS_REFERENCE 가치 때.
내가 뭘 잘못하고 있니? 당신은 또한 마지막 또는 최소 또는 최대를 사용할 수 있습니다
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];
대신 First
의 :
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