2017-10-16 10 views
0

가 나는이 의견 사용자의 테이블이 제품에 대해 수행 한 MAX 함수를 사용하여 쿼리를 작성 : 내가해야 할 일은데 문제가

FBID L_ID Comments       Comments_TS    User 
110 9885 Testing counting of feedback IDs 07-APR-17 02.52.01.495927000 PM  AMOWIN 
111 9885 Test how adding additional comments 07-APR-17 02.52.56.357410000 PM  AMOWIN 
112 9911 Test the duplication of plans on 07-APR-17 03.09.27.885587000 PM  AMOWIN 
113 9950 Testing pending for source doc  10-APR-17 12.03.19.303782000 PM  AMOWIN 
116 10218 testing initial feedback sent  02-MAY-17 09.55.59.174925000 AM  AMOWIN 
126 12758 Testing Feedback, Get Next Disabled 12-JUN-17 09.41.15.979093000 AM  AMOWIN 
127 12758 jjjjjjjjjjjjjjjjjjjjjjjjjjjjj  12-JUN-17 11.17.23.742109000 AM  MABAXT 
128 12758 Testing status      12-JUN-17 12.05.32.354178000 PM  SWMART 
129 12758 Testing returning to CSE   12-JUN-17 12.06.09.276945000 PM  AMOWIN 
130 12758 2nd Test       12-JUN-17 01.52.08.540984000 PM  AMOWIN 

만 마지막 (즉, 가장 최근)로 레코드를 가져 논평. 나는이 시도했지만이 근처에도 아니다 :

나는 (Line_ID의 줄임말) L_ID에 의한 제품 테이블이 다시 연결 결국 필요, 그래서 나는 Comment_TS 필드에 의해 (만든 마지막 코멘트를 필요
SELECT MAX(Comments_TS), L_ID, COMMENTS 
FROM F_FEEDBACK FB1 
Group By L_ID, Comments; 

, 이는 각 L_ID에 대한 시간 소인입니다. 저는 Oracle 12C를 사용하고 있습니다. 그러나 누구든지 SQL을 직접 수행 할 수 있다면 거기에서 알아낼 수 있습니다. 왜 내가 오늘이 주위에 내 머리를 얻을 수 있는지 모르겠다.

답변

2

나는 이것을 MAX...KEEP..DENSE_RANK 접근 방식으로 작성했습니다.

일부 비공식적 인 내가 (오래된 될 수있다) 다시 잠시했다 벤치마킹, 이것은 분석 row_number() 접근 방식보다 (특히 메모리) 적은 리소스를 사용하는 것으로 나타났다.

+0

동의 함 -이 집계 쿼리가 필요한 경우 (해당되는 것처럼 보임) 분석 함수를 조롱하면 너무 많은 작업이 수행됩니다. – mathguy

+0

더 간단 해 보였으므로 저도 같이갔습니다.하지만 두 답이 모두 작동했습니다.Gordon은 이미 많은 담당자가 있기 때문에 Matt에게 체크 표시를하고 있습니다. :영형) –

2

원하는 것을 수행하지 않습니까? 각 l_id이 필요한 경우

select fb.* 
from f_feedback 
order by comments_ts desc 
fetch first 1 row only; 

, 다음 row_number()을 사용

select fb.* 
from (select fb.*, 
      row_number() over (partition by l_id order by comments_ts desc) as seqnum 
     from f_feedback fb 
    ) fb 
where seqnum = 1; 

같은, 가장 최근, 타임 스탬프 모든 의견을 원하는 경우에

는 다음 rank() 대신 row_number()를 사용합니다.

+0

아마도 두 번째 쿼리에서'fetch first 1 row only'를 제거하려고합니다. –

+0

l_id에 의해 필요하지만 코드는 총 1 행만 반환했습니다. 모든 L_id에 대해 최소한 1 줄이 있어야합니다. –

+0

@AaronDietz - 네가 맞다고 생각해. 내가 그 라인을 꺼내서 일을하는 것처럼 보였다. –