반응형
가장 최근 날짜로 행을 선택하는 SQL
다음 쿼리와 결과를 사용하여 ChargeId 및 ChargeType이 고유 한 최신 항목을 찾고 있습니다.
select chargeId, chargeType, serviceMonth from invoice
CHARGEID CHARGETYPE SERVICEMONTH
1 101 R 8/1/2008
2 161 N 2/1/2008
3 101 R 2/1/2008
4 101 R 3/1/2008
5 101 R 4/1/2008
6 101 R 5/1/2008
7 101 R 6/1/2008
8 101 R 7/1/2008
원하는 :
CHARGEID CHARGETYPE SERVICEMONTH
1 101 R 8/1/2008
2 161 N 2/1/2008
GROUP BY 를 사용하여 유형 및 ID별로 항목을 그룹화 할 수 있습니다 . 그런 다음 MAX () Aggregate 함수를 사용하여 가장 최근 서비스 월을 가져올 수 있습니다. 아래는 ChargeId, ChargeType 및 MostRecentServiceMonth가 포함 된 결과 집합을 반환합니다.
SELECT
CHARGEID,
CHARGETYPE,
MAX(SERVICEMONTH) AS "MostRecentServiceMonth"
FROM INVOICE
GROUP BY CHARGEID, CHARGETYPE
따라서 이것은 요청자가 요청한 것이 아니라 "가장 최근 날짜로 행을 선택하는 SQL"에 대한 대답입니다.
http://wiki.lessthandot.com/index.php/Returning_The_Maximum_Value_For_A_Row 에서 수정 됨
SELECT t.chargeId, t.chargeType, t.serviceMonth FROM(
SELECT chargeId,MAX(serviceMonth) AS serviceMonth
FROM invoice
GROUP BY chargeId) x
JOIN invoice t ON x.chargeId =t.chargeId
AND x.serviceMonth = t.serviceMonth
SELECT chargeId, chargeType, MAX(serviceMonth) AS serviceMonth
FROM invoice
GROUP BY chargeId, chargeType
대부분의 개발자는 거대한 데이터에 미치는 영향을 보지 않고 인라인 쿼리를 사용합니다.
간단하게 다음과 같이이 작업을 수행 할 수 있습니다.
select a.chargeId, a.chargeType, a.serviceMonth
from invoice a
left outer join invoice b
on a.chargeId=b.chargeId and a.serviceMonth <b.serviceMonth
where b.chargeId is null
order by a.serviceMonth desc
select to.chargeid,t0.po,i.chargetype from invoice i
inner join
(select chargeid,max(servicemonth)po from invoice
group by chargeid)t0
on i.chargeid=t0.chargeid
위의 쿼리는 고유 한 청구 ID에 다른 청구 유형 조합이있는 경우 작동합니다.이 간단한 쿼리가 성능 시간을 고려할 때 도움이되기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/189213/sql-selecting-rows-by-most-recent-date
반응형
'programing' 카테고리의 다른 글
컨트롤러에서 JSON 렌더링 (0) | 2020.08.28 |
---|---|
파이썬에서 빈 세트에 항목을 어떻게 추가 할 수 있습니까? (0) | 2020.08.28 |
캔버스에 이미지를 추가하는 방법 (0) | 2020.08.28 |
gitignore를 사용하여 파일 무시 (삭제는 아님) (0) | 2020.08.28 |
flex : 1은 무엇을 의미합니까? (0) | 2020.08.28 |