2012-08-26 5 views
0

제품에 대한 지불 조건이 포함 된 테이블이 있습니다. 해당 제품에 대한 최신 조건을 얻고 싶습니다. 아래 쿼리에서 응용 프로그램이 제작 된 이후로 모든 조건을 반환합니다. 해당 제품에 대한 최신 용어 만 필요합니다.SQL Server 2008 테이블의 최신 레코드를 선택하십시오.

SELECT 
    dbo.FinishProduct.id, 
    dbo.PaymentTerm.id, 
    dbo.PaymentTerm.terms, 
    dbo.PaymentTerm.type 
FROM 
    dbo.PaymentTerm 
INNER JOIN 
    dbo.FinishProduct ON (dbo.PaymentTerm.finishProductId = dbo.FinishProduct.id) 
WHERE 
    finishproduct.id = 39 

PaymentTerm 표는 PK id을 가지고 있으며, 그것은 다음과 같이 생성 및 업데이트 할 때이 날짜가 : 당신은 쿼리에 lastUpdated 필드에 절을 ORDERBY 넣고 10을 얻거나 수

id BIGINT NOT NULL IDENTITY, 
created DATETIME, 
lastUpdated DATETIME, 
+0

가장 최근에 지불 용어를 결정하는 기준은 무엇입니까? 어떤 버전의 SQL Server를 사용하고 있습니까? – Vikdor

+0

어떤 것이 최신인지 어떻게 알 수 있습니까? –

+0

PaymentTerm을 순서대로 정렬하는 데 사용할 수있는 필드가 있습니까? 날짜 또는 타임 스탬프 필드 created_at 열처럼? – Alistair

답변

1

다음과 같이 최신 레코드가 표시됩니다.

SELECT TOP 10 FP.id, PT.id, PT.terms, PT.type 
    FROM dbo.PaymentTerm PT 
    INNER JOIN dbo.FinishProduct FP ON PT.finishProductId = FP.id 
    WHERE FP.id=39 
    ORDER BY lastUpdated desc 

또는 하루에서 현재 날짜로 모든 레코드를 가져와야하는 경우 이처럼

SELECT FP.id, PT.id, PT.terms, PT.type 
    FROM dbo.PaymentTerm PT 
    INNER JOIN dbo.FinishProduct FP ON PT.finishProductId = FP.id 
    WHERE FP.id=39 AND DateDiff(DAY,lastUpdated, GETDATE()) <= 1 
+0

나는 이런 식으로 뭔가를 시도했지만 잘못된 행을 반환 'TOP 1 FP.id은, PT.id, dbo.PaymentTerm PT INNER FROM PT.terms, PT.type 이 PT.finishProductId ON dbo.FinishProduct FP 가입 SELECT = FP.id WHERE FP.id = 39 ORDER BY PT.lastUpdated desc' – ZAJ

+0

이 경우 잘못된 행이 무엇입니까? –