0

これが私のSQLステートメントです...

SELECT     
    dbo.PPMASTER.Per_or_Bus, 
    dbo.PPMASTER.Assessment_Date, 
    dbo.PPBUSMST.Assessment_Number, 
    dbo.PPBUSMST.Year
FROM dbo.PPBUSMST INNER JOIN dbo.PPMASTER 
                  ON dbo.PPBUSMST.Assessment_Number = dbo.PPMASTER.Assessment_Number
WHERE (dbo.PPBUSMST.Assessment_Number = @Assessment)

問題は、に起因する重複した結果が得られることAssessment_Dateです。それぞれAssessment_Dateが年に 1 つの結果のみを持っている必要があります。何か案は?

結果のサンプルデータの一部を次に示します...

**B 1996-05-29 00:00:00 9005450 1996**
B   1996-05-29 00:00:00 9005450 1997
B   1996-05-29 00:00:00 9005450 1998
B   1996-05-29 00:00:00 9005450 1999
B   1996-05-29 00:00:00 9005450 2000
B   1996-05-29 00:00:00 9005450 2001
B   1996-05-29 00:00:00 9005450 2002
B   1997-05-29 00:00:00 9005450 1996
**B 1997-05-29 00:00:00 9005450 1997**
B   1997-05-29 00:00:00 9005450 1998
B   1997-05-29 00:00:00 9005450 1999
B   1997-05-29 00:00:00 9005450 2000
B   1997-05-29 00:00:00 9005450 2001
B   1997-05-29 00:00:00 9005450 2002
B   1998-04-27 00:00:00 9005450 1996
B   1998-04-27 00:00:00 9005450 1997
**B 1998-04-27 00:00:00 9005450 1998**
B   1998-04-27 00:00:00 9005450 1999
B   1998-04-27 00:00:00 9005450 2000
B   1998-04-27 00:00:00 9005450 2001
B   1998-04-27 00:00:00 9005450 2002

私が**したものは、私が実際に達成したい結果です

4

1 に答える 1

1

join達成したいものとしてマークしたものを見ると、条件が不完全であることを意味します。必要な行は、 where だけでなく、PPBUSMST.Assessment_Number = PPMASTER.Assessment_NumberwhereYEAR(PPMASTER.Assessment_Date) = PPBUSMST.[Year]です。

それを条件に追加するとjoin、問題が解決するはずです。

于 2013-06-28T21:52:59.937 に答える