如何避免在内部联接中显示重复值

时间:2017-05-09 19:25:01

标签: sql select duplicates

enter image description here我试图不在结果列表的ORDER列中显示重复值;但是,我显示重复" ORDER"值。我怎样才能解决这个问题?

        select i.contractnumber as "CONTRACT NUMBER", t.ordernumber as
        "ORDER", t.title as "ORDER TITLE", c.companyname as "COMPANY",
        LEFT(cs.firstname, 1) +'. '+ cs.lastname as "TECHINICAN",
        REPLACE(cs.CONTACT,'703-735-', 'x') as "CONTACT (703) 735....)"
        from Company c inner join CONTRACTS i
          on i.Company_ID = c.Company_ID
        inner join Orders t
          on t.ordernumberid = i.ordernumberid
        inner join hub rut
          on rut.titleOrder_ID = t.titleOrder_ID
        inner join hub2 r
          on r.Role_ID = rut.Role_ID
        inner join Customer u
          on u.Customer_ID = rut.Customer_ID
        inner join CORD cs
          on cs.CORD_ID = u.CORD_ID
        inner join Method cv
          on cv.Method_ID = i.Method_ID
        where cs.Contact LIKE '%703-735-%'
          and cv.Method_ID = 1;

enter image description here

1 个答案:

答案 0 :(得分:2)

解决这个问题的简单方法是使用一个组 - 例如GROUP BY Order但是如果您有其他列的多个值,则会出现问题 - 您可以选择一个值 - 例如最大。这就像这样:

select
  max(i.contractnumber) as "CONTRACT NUMBER", 
  t.ordernumber as "ORDER", 
  max(mat.title) as "ORDER TITLE", 
  max(c.companyname) as "COMPANY",
  max(LEFT(cs.firstname, 1) +'. '+ cs.lastname) as "TECHINICAN",
  max(REPLACE(cs.CONTACT,'703-735-', 'x')) as "CONTACT (703) 735....)"
-- etc as you have
-- ...
-- end with
GROUP BY t.ordernumber