2014-12-10 2 views
0

나는이 MS 액세스 쿼리가 : 나는 이미지에 레코드를 필터링하려는 지금SQL이 그룹 쿼리 및 계산

SELECT weber, t1.artnr, t1.varnr, t1.lfdnr_kal, fert.invnr, fert.min, fert.[lst/h] FROM (
SELECT stammdat.weber, lackzahlen.artnr, lackzahlen.varnr, first(stammdat.[lfdnr-kal]) AS lfdnr_kal 
FROM lackzahlen LEFT JOIN stammdat ON (lackzahlen.artnr=cstr(IIf(stammdat.artnr Is Null,'',cstr(stammdat.artnr)))) AND (lackzahlen.varnr=cstr(IIf(stammdat.varnr Is Null,'',cstr(stammdat.varnr)))) 
GROUP BY lackzahlen.artnr, lackzahlen.varnr, io_stkzahl, weber) AS t1 
LEFT JOIN fert ON (t1.lfdnr_kal=fert.[lfdnr-kal]) AND (t1.artnr=cstr(iif(fert.artnr Is Null,'',cstr(fert.artnr)))) WHERE fert.invnr IN ('338902', 'R20000') 

을 :

enter image description here

보시다시피, 나는 프로의 weber, artnr, varnr, lfdnr_kal 및 invnr이 같은 min 및 lst/h 값을 갖는 둘 이상의 행이있는 기록을 갖고 싶습니다.

나는 아마 cound (아마 카운트)와 group by를 사용해야한다고 생각한다. 그러나 어떻게?

예에서 모든 행을 표시하지 않았습니다.

답변

1

가 중복 행

GROUP BY weber, t1.artnr, t1.varnr, t1.lfdnr_kal, fert.invnr, fert.min, fert.[lst/h] 
    having count(*) >1 
0

SQL을 시도하십시오 : 합계 또는 AVG 값을 언급하지 않았으므로 별개의 레코드로 문제가 해결 될 것입니다.

select weber, a.artnr,a.varnr, a.lfdnr_kal, a.invnr, a.min, a.lst_h 
 
(
 
SELECT weber, t1.artnr, t1.varnr, t1.lfdnr_kal, fert.invnr, fert.min, fert.[lst/h] as lst_h FROM (
 
SELECT stammdat.weber, lackzahlen.artnr, lackzahlen.varnr, first(stammdat.[lfdnr-kal]) AS lfdnr_kal 
 
FROM lackzahlen LEFT JOIN stammdat ON (lackzahlen.artnr=cstr(IIf(stammdat.artnr Is Null,'',cstr(stammdat.artnr)))) AND (lackzahlen.varnr=cstr(IIf(stammdat.varnr Is Null,'',cstr(stammdat.varnr)))) 
 
GROUP BY lackzahlen.artnr, lackzahlen.varnr, io_stkzahl, weber) AS t1 
 
LEFT JOIN fert ON (t1.lfdnr_kal=fert.[lfdnr-kal]) AND (t1.artnr=cstr(iif(fert.artnr Is Null,'',cstr(fert.artnr)))) WHERE fert.invnr IN ('338902', 'R20000') 
 
) a group by weber, a.artnr,a.varnr, a.lfdnr_kal, a.invnr, a.min, a.lst_h 
 
Having count(*) > 1

희망이 도움이 :)

+0

이 문제는 중복 행을 제거하지 않았다 얻을 group byhaving을 추가하지만, 얻을 수 중복 된 행 – iris