2017-01-18 1 views
0

ID가 7434 인 경우 batchno의 행이 8999 개 인 테이블 "batchtracing"이 있습니다. 이 테이블에 DISTINCT batchno을 원합니다. 모든 DISTINCT batcho에 대해 47 행이 있습니다. 각 batchno에 대해 MAX (ID)를 얻고 싶지만 모든 행에 대해 확인하고 싶습니다.동일한 쿼리 SQL에서 distinct 및 MAX (id)를 사용하는 방법?

내 질문은 : 나는 이것을 시도하지만, 모든 DISTINCT batchno

에 대한 MAX (ID)를 가질 수하는 내 솔루션이 아닌 방법이 열 ID에서 모든 행에 같은 값 저를 넣어.

SELECT DISTINCT batchno, 
          (SELECT  MAX(id) AS Expr1 
          FROM   batchtracing) AS id 
FROM   batchtracing AS batchtracing_1 
WHERE  (contentid = '7434') 

내가 원하는 것을 얻으려면 3 개의 쿼리를 사용해야하지만 천천히 있기 때문에 하나만 원한다. 내가 지금 무엇 :

Step 1: SELECT DISTINCT batchno, batchstatus FROM batchTracing WHERE (contentid = " & contentid & ") AND (batchstatus = 'active') ORDER BY batchno 

Step 2:SELECT MAX(id) AS Expr1 FROM batchTracing WHERE (batchno = '" & batchno & "') AND (contentid = '" & contentid & "') 

Step 3: SELECT batchstatus FROM batchtracing WHERE id = batchTracingID 

이 방법은 매우 천천히 그리고 난 그냥 하나의 쿼리가이 모든 결과를하고자합니다.

enter image description here

답변

2

사용 ROWNUMBER : 당신은 GROUP BY을 사용하려면 같은

Select b.* 
From (select b.*, row_number() over (partition by batchno order by id desc) as seqnum 
    From batchtracing 
    ) b 
Where seqnum = 1 
+0

내 생각으로 할 수 있다고 생각하십니까? 이 예제에서 이해할 수 없음 – Vladut

+0

contentid = '7434') – Vladut

+0

@Vladut에 대한 예제가 하나 필요합니다.이 쿼리는 batchtracing에서 batchno 당 가장 높은 ID를 가진 행을 가져옵니다. 따라서이 쿼리는 상태 추적 등을 얻을 수 있습니다. 'where contentid = '7434'를 서브 쿼리에 추가하면됩니다. – SqlZim

1

소리가 난다. batchTracing 콘텐츠 ID가 = '7434' 그룹에서

Select BatchNo, Max(Id) As Id 
From BatchTracing 
Where ContentId = '7434' 
Group By BatchNo 
1

, 당신이 할 필요는 GROUP BY을 사용하는 것입니다 BY batchno

+0

그리고 batchstatus를 넣고 싶다면? – Vladut

+0

@Vladut 그건 다른 질문이다. [Gordon Linoff의 답변] (http://stackoverflow.com/a/41720928/3393505). – Siyual

+0

노동 창피, 정말 고마워! – Vladut

1

SELECT batchno, 최대 (ID) : 내가 제대로 질문을 이해한다면

select batchno, max(id) 
    from batchtracing 
where contentid = 7434 
group by batchno 
2

당신은 일괄 처리 번호로 그룹화해야합니다.

SELECT batchno, MAX(id) 
FROM batchtracing 
WHERE contentid = '7434' 
GROUP BY batchno 

contentid가 숫자 열인 경우 불필요한 변환을 피하기 위해 따옴표를 제거해야합니다.

관련 문제