가 여기 내 데이터의 모형이다 :SQL 쿼리에 액세스 : 동일한 값의 두 개의 열을 만들지 만 열 1 = 열 2 인 경우를 어떻게 제외합니까?
Product || MFGR
A || 1
A || 2
B || 1
B || 3
이 데이터에서, I는 모든 가능한 "스왑"조합을 찾을 싶습니다. 내가 왔
MFGR1 || MFGR2
1 || 2 \______ Swaps for Product A
2 || 1 /
1 || 3 \______ Swaps for Product B
3 || 1 /
예를 들어, 제품 A가 MFGR 1 마찬가지로, 제품 B가이에서 MFGR 1 또는 3에서 할 수있다 (2)에서 할 수있다, 나는 다음과 같은 테이블을 생성하고 싶습니다
SELECT DISTINCT
[Products].MFGR AS MFGR1,
[Products_1].MFGR AS MFGR2
FROM [Products]
LEFT JOIN [Products] AS [Products_1] ON [Products].[Product] = [Products_1].[Product];
그러나,이 것으로 예상되는 경우를보고 MFGR1 = MFGR2 :
MFGR1 || MFGR2
1 || 1 ← want removed
1 || 2
2 || 1
2 || 2 ← want removed
1 || 3
3 || 1
3 || 3 ← want removed
Fi를 다음과 같은 SQL과 매우 가까운 내가했던 첫 번째 일은 Design View에 들어가서 =Not(MFGR1)
기준을 MFGR2에 추가했습니다. 즉,이 SQL을 생성 : HAVING ((([Products_1].MFGR)=Not ([PRODUCTS_1].MFGR)=([MFGR1])));
하지만 난 그것을 보려고 할 때 나는이 문서가 권장처럼 내가 GROUP BY MFGR1, MFGR2
을 추가 HAVING clause [name] without grouping or aggregation.
를 얻을 수 있지만, 그때는 Your query does not include the specified expression 'MFGR1' as part of an aggregate function
, but from what I see가,이 오류가 내 GROUP BY
에 MFGR1
을 포함하여 해결해야 얻을.
나의 초기 시도는 (조건없이) 초기 쿼리를 기반으로 작성된 새로운 쿼리를 작성하는 것이 었습니다. 여기에 대한 SQL은 다음과 같습니다.
SELECT [Product Query].MFGR1, [Product Query].MFGR2
FROM [Product Query]
WHERE ((([Product Query].MFGR2)=Not ([Product Query].MFGR2)=([MFGR1])));
그러나 이것은 모든 행을 사라지게합니다. 당신의 가입 조건에 [Products].MFGR <> [Products_1].MFGR
를 추가
'HAVING'을 사용하지 말고 'WHERE'를 사용하십시오. 당신의 첫 번째 아이디어는 그 외에 맞았습니다. '[Products_1] .MFGR <> [PRODUCTS_1] .MFGR' – JNevill
@JNevill 아래에서 Aaron의 솔루션을 사용하여 끝내지 만 테스트를 거쳤으며 동일한 결과가 있음을 확인했습니다. 고마워요 :) – MrMusAddict
그래! INNER JOIN을 사용하기 때문에 그들은 기능적으로 서로 같습니다. 나는 당신이 일하고있어 기쁘다 :) – JNevill