2016-12-14 2 views
0

많은 스레드를 읽었지만 문제점에 대한 올바른 해결책을 얻지 못했습니다. 이것은 테이블과 기계 값의 제비를 가진 매우 큰 데이터베이스를 기반으로SQL-LEFT JOIN 및 WHERE 문을 사용하여 첫 번째 행을 표시합니다.

SELECT 
    '"Dose History ID"' = d.dhs_id, 
    '"TxFieldPoint ID"' = tp.tfp_id, 
    '"TxFieldPointHistory ID"' = tph.tph_id, 
    ... 

FROM txfield t 
LEFT JOIN txfielpoint tp ON t.fld_id = tp.fld_id 
LEFT JOIN txfieldpoint_hst tph ON fh.fhs_id = tph.fhs_id 
... 

WHERE d.dhs_id NOT IN ('1000', '10000') 
    AND ... 
ORDER BY d.datetime,...; 

: 내가 데이터를 수집하고 csv 파일로 쉘 스크립트 당을 쓰는 쿼리를 가지고이 Thread

비교입니다 . 관심있는 항목을 선택하고 기본 제공 테이블 ID로 연결했습니다. 이제는 동일한 값을 가진 많은 행을 얻고 ID가 변경되는 결과를 줄여야합니다. 난 그냥

WHERE "Rownumber" is 1 

또는 이런 식의 기계와 함께 "tph.tph_id"의 ​​첫 번째 행이 필요합니다. 지금까지 적절한 하위 쿼리를 구현하거나 ROW_NUMBER() SQL 함수를 사용할 수 없습니다. 귀하의 도움은 매우 감사하겠습니다. 결과는 다음과 같습니다. 마지막 ID를 기준으로이 모든 숫자에 대해 하나의 행이 필요합니다 (모든 ID는 엄격하게 연속적이지 않습니다).

A01";261511;2843119;714255;3634457; 
A01";261511;2843113;714256;3634457; 
A01";261511;2843113;714257;3634457; 
A02";261512;2843120;714258;3634464; 
A02";261512;2843114;714259;3634464; 
.... 
+0

시도'GROUP BY' 집계를 대상으로하면서 [tph.tph_id를 제외한 모든 필드]'GROUP BY' 당신에게 제공해야 할 수 있습니다 당신이 원하는 결과 –

+0

아마도 내가 뭔가를 놓치고 있지만, 선택의 시작 부분에 치명적인 오류가 있습니다. 문자열에 값을 할당 할 수 없습니다 (예 : '' '복용량 기록 ID' '= d.dhs_id'는 불법입니다). 둘째로, 별칭'd'를 사용하고 있습니다 (WHERE d.dhs_id NOT IN ('1000', '10000')'와 같습니다).이 앨리어스가 정의 된 곳이 보이지 않습니다. – FDavidov

+0

@FDavidov d (및 기타)의 별칭은 나중에 SELECT 부분에서옵니다. 나는 당신의 응답을 위해 – Nurito

답변

0

"GROUP BY"가 귀하의 필요에 부합한다고 생각합니다.

당신은 단일 행에 열 집합에 대해 동일한 값을 가진 그룹 행

관련 문제