2016-04-05 2 views
1

У меня есть 2 таблицы item и memo. В item, itemId - ПК, а itid - FK. В memomemID является ПК.Удалить дубликаты строк в представлениях (студия управления SQL Server 2014)

Я создал вид:

SELECT  
    dbo.memo.memID, dbo.memo.fullname, dbo.memo.company, 
    dbo.memo.department, dbo.memo.MRnum, dbo.memo.date, 
    dbo.memo.returndate, dbo.memo.remarks, 
    dbo.memo.issuedby, dbo.memo.picture, dbo.item.itemID AS Expr1, 
    dbo.item.Itemnumber, dbo.item.description, dbo.item.qty,  
    dbo.item.unitofmeasure, dbo.item.itid 
FROM   
    dbo.memo 
INNER JOIN 
    dbo.item ON dbo.memo.memID = dbo.item.itid 
WHERE 
    (dbo.memo.department = N'tsd') 

и выход этот

this is the output

Я просто хочу, 1 выход из FULLNAME, компании, отдела, MRnum, дата, замечания, issuedby каждый несколько рядов позиции

enter image description here

Надеюсь, вы понимаете. спасибо

+2

SELECT DISTINCT ... Но дубликатами в INNER JOIN, как правило, означает, что ваши данные не нормируется – Mihai

+0

вы можете показать нам свой ожидаемый результат? Звучит для меня, что вы хотите показать полное имя, компанию и т. Д. В одной строке и пустую для остальных строк. – Squirrel

+0

@Squirrel. В элементе, связанном с записью, есть несколько данных, я хочу, чтобы результат был таким, 1 имя с несколькими элементами. – mhitzsuiko

ответ

0

В вашем запросе вы можете использовать DISTINCT.

Ниже

SELECT DISTINCT  dbo.memo.memID, dbo.memo.fullname, dbo.memo.company, dbo.memo.department, dbo.memo.MRnum, dbo.memo.date, dbo.memo.returndate, dbo.memo.remarks, dbo.memo.issuedby, dbo.memo.picture, dbo.item.itemID AS Expr1, dbo.item.Itemnumber, dbo.item.description, dbo.item.qty, dbo.item.unitofmeasure,      dbo.item.itid 
FROM dbo.memo 
    INNER JOIN dbo.item ON dbo.memo.memID = dbo.item.itid 
WHERE  (dbo.memo.department = N'tsd') 
0

я просто хочу, 1 выход FULLNAME, компании, отдела, MRnum, дата, замечания, issuedby с несколькими рядами ст

Вы могли бы сделайте это, используйте group by на требуемых колонках и возьмите top 1

SELECT TOP 1 
     dbo.memo.fullname , 
     dbo.memo.company , 
     dbo.memo.department , 
     dbo.memo.MRnum , 
     dbo.memo.date , 
     dbo.memo.remarks , 
     dbo.memo.issuedby 
FROM dbo.memo 
INNER JOIN dbo.item 
     ON dbo.memo.memID = dbo.item.itid 
WHERE (dbo.memo.department = N'tsd') 
GROUP BY dbo.memo.fullname , 
     dbo.memo.company , 
     dbo.memo.department , 
     dbo.memo.MRnum , 
     dbo.memo.date , 
     dbo.memo.remarks , 
     dbo.memo.issuedby 
0

Также вы можете использовать TOP, как показано ниже, если вы определите, вы получите все повторяющиеся записи.

SELECT TOP 1 dbo.memo.memID, dbo.memo.fullname, dbo.memo.company, dbo.memo.department, dbo.memo.MRnum, dbo.memo.date, dbo.memo.returndate, dbo.memo.remarks, dbo.memo.issuedby, dbo.memo.picture, dbo.item.itemID AS Expr1, dbo.item.Itemnumber, dbo.item.description, dbo.item.qty, dbo.item.unitofmeasure,      dbo.item.itid 
FROM dbo.memo 
    INNER JOIN dbo.item ON dbo.memo.memID = dbo.item.itid 
WHERE  (dbo.memo.department = N'tsd') 
+0

Я хочу, чтобы результат был таким: «полное имя», «компания», «отдел», «MRnum», «дата», несколько «itemnumber», «description», qty ', unitofmeasure' – mhitzsuiko

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