2013-12-06 4 views
0

У меня есть две таблицы, TABLE1 и TABLE2. TABLE1 Имеет 4 колонки: Name, Client, Position и ID. TABLE2 имеет 3 колонки: Amount, Time и ID. Для каждого ID в TABLE1 есть одна или несколько записей в TABLE2, все с идентичными значениями ID и Time, но значениями Amount.Удаление повторяющихся строк в VIEW в SQL Server 2008

В представлении, я каскадная строка Name, Client, Position и ID от TABLE1, но мне также нужно сцепить Time для каждого ID из TABLE2 в эту строку. Если я создаю представление, я создаю тонну повторяющихся строк в представлении, так как он перечисляет то же самое ID несколько раз для каждого значения Amount в TABLE2.

Мне нужно избавиться от дубликатов, поэтому мне нужно либо избежать репликации, которая происходит из соединения, либо найти способ просто удалить все дубликаты из представления.

Надеюсь, это все достаточно ясно. Спасибо за чтение и за любую помощь, которую вы можете предоставить!

+0

и ваш код ... – Rob

+2

Попробуйте использовать 'DISTINCT', а ВЫБОР данных для представления. – user2989408

ответ

1

DISTINCT может быть целесообразным:

CREATE VIEW [dbo].[View1] 
AS 
SELECT distinct 
    dbo.Table1.Id, 
    dbo.Table1.Name, 
    dbo.Table1.Client, 
    dbo.Table1.Position, 
    dbo.Table2.[Time] 
FROM dbo.Table1 
LEFT OUTER JOIN dbo.Table2 
ON dbo.Table1.Id = dbo.Table2.Id 

SqlFiddle: http://sqlfiddle.com/#!3/65651/1

На стороне записки, в зависимости от того, что ваши структуры таблиц на самом деле, вы могли бы рассмотреть возможность суррогатного первичного ключа на table2 если вы не имеют естественного. Я не поставил его в этом примере, потому что есть вероятность, что у вас его уже есть - просто убедитесь.

+0

Yup тот сделал. Чувствуешь себя немного глупо, я не пробовал этого хаха. Благодаря! – tsHunter

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