SQL:不显示重复项

num*_*ang 1 sql sql-server

我想不在下面的sql的输出中显示重复的行,所以我在那里有'distinct',但这不起作用.我输出如下:

PermitNumber PermitName CreatedOn  
111          ABCD       1/2/2011  
111          ABCD       3/4/2012  
222          DFES       3/6/2000  
Run Code Online (Sandbox Code Playgroud)

我想只有一行111,但我得到超过1行因为111有一个以上的修改,但我不在乎它是否有1或1000.

select  distinct (dbo.PermitNumber(mp.PermitId)), 
        dbo.PermitName(mp.PermitId),
    mod.[CreatedOn] as [CreatedOn]
from    tblPermit mp, dbo.[tblModification] mod
where mod.PermitId = mp.PermitId
order by 1
Run Code Online (Sandbox Code Playgroud)

使用SQL Server

Tar*_*ryn 8

Distinct适用于所有列,因此您可以使用聚合函数:

  select  mp.PermitNumber,
    mp.PermitName,
    max(mod.[CreatedOn])as [CreatedOn]
  from    tblPermit mp
  Inner join dbo.[tblModification] mod
      on mod.PermitId = mp.PermitId
  Group by mp.PermitNumber,
    mp.PermitName
  order by 1
Run Code Online (Sandbox Code Playgroud)

  • 那就是@numberwang! (2认同)