2016-07-04 2 views
0

Этот запрос возвращает каждую запись дважды. например, поле «SpCall» является первичным ключом, и запрос возвращает:SQL-запрос возвращает повторяющиеся записи

result of the sql query

я упускаю что-то?

QUERY:

SELECT CONVERT(varchar(10),BusinessRevenue.Entrance_Date,103) as 
     analistEnterance,Teams.DivisionName, Teams.DepartmentManager, 
     BusinessRevenue.Team_Name, BusinessRevenue.Account_Manager, 
     BusinessRevenue.Forigen_Infra_Count,BusinessRevenue.Partner_Infra_Count, 
     BusinessRevenue.Networks_Adsl_Count,BusinessRevenue.Pri_Or_Siptopri,BusinessRevenue.SIP, 
     BusinessRevenue.Centrex,BusinessRevenue.Hosting , BusinessRevenue.Vps_Server, 
     BusinessRevenue.Mabal,BusinessRevenue.Equipment_Income, BusinessRevenue.SpCall 
FROM BusinessRevenue LEFT JOIN Teams ON BusinessRevenue.Team_Name=Teams.TeamName 
WHERE 
    BusinessRevenue.SpCall IS NOT NULL 
    AND BusinessRevenue.Entrance_Year =2016 
    AND BusinessRevenue.Entrance_Date <='30/06/2016' 
    AND BusinessRevenue.Entrance_Date >='01/06/2016' 
    AND BusinessRevenue.Team_Name NOT IN('xxx','yyy') 

Большое спасибо за ваше время и внимание!

+0

Сравните все ваши две строки для spcall (20414) и убедитесь, что эти две строки дублированы или нет. – StackUser

+1

Это соединение. Таким образом, в зависимости от того, какие данные имеет ваша другая таблица, набор результатов может содержать повторяющиеся записи, даже если вы присоединяетесь к столбцу первичного ключа. – sudheeshix

+1

для удаления дублирующего использования предложения DISTINCT. Для меня правильно, что у вас есть дублированные строки (я полагаю, что ваш BusinessRevenue больше мощности, чем таблица команд) –

ответ

1

Вы должны попытаться сделать левое соединение, используя первичный ключ таблицы «Команды». Как вы писали, «BusinessRevenue.SpCall» является первичным ключом для таблицы «BusinessRevenue», но поскольку вы выполняете левое соединение «BusinessRevenue» с таблицей «TeamName» столбца «Команда», возможно, более одной строки в «Командах» «имеют совпадение с« BusinessRevenue.Team_Name », поэтому SpCall больше не является первичным ключом результирующей таблицы.

+0

Благодарю вас всех за комментарии. – jonathana

0

Попробуйте использовать SELECT DISTINCT, это приведет к удалению повторяющихся строк.

+0

Это доцентная работа, я не могу понять, почему, может быть, потому, что имена команд и отделы не различаются в таблице команд, это не лучшее решение, но, возможно, я перейду информацию в своем приложении. – jonathana

+0

Я просто понял, что ваш запрос выбирает намного больше столбцов, чем те, которые вы показываете на картинке. Я уверен, что там будут разные значения, генерирующие повторяющиеся строки. Вам нужно выбрать все эти столбцы? Если нет, вы можете удалить те, которые вызывают повторяющиеся строки. – Sergio

Смежные вопросы