2013-06-28 4 views
0

Вот мой SQL заявление ...Слишком много результатов в SQL SELECT

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 должен иметь только один результат за год. Есть идеи?

Вот некоторые из данных результатов выборки ...

**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 

Те, у меня есть ** 'D являются результаты, которые я на самом деле хотите достичь

+2

И вы попытались запустить подсчет количества (оценка_данных) в каждой таблице, чтобы убедиться, что они различны? –

+1

Можете ли вы показать повторяющиеся строки? –

+3

Пожалуйста, разместите несколько примеров данных, которые демонстрируют проблему. Было бы полезно также создать sqlfiddle. – Barmar

ответ

1

Глядя на то, что вы помечается как желая достичь, это означает, что ваши условия join являются неполными. Строки вы хотите не только те, где PPBUSMST.Assessment_Number = PPMASTER.Assessment_Number, но и где YEAR(PPMASTER.Assessment_Date) = PPBUSMST.[Year].

Добавление к вашему join условий должно решить проблему.

+0

Спасибо, Мэтью! Я попытался сделать аналогичную вещь в предложении WHERE, но это не сработало правильно, хотя я не знаю, почему. Однако ваше предложение было на месте. Благодаря! – cwnOnTheHill