我有以下用MSSQL编写的查询:

Select customer.name,
max(callnote.ID),
CAST (callnote.NOTE as VARCHAR(100))
from callnote
join CONTACT
    on
        contact.ID=callnote.CONTACT_ID
join CUSTOMER
    on
        customer.ID=contact.CUSTOMER_ID
where callnote.TYPE='n' and CUSTOMER.AcctClass>='1'
group by customer.NAME, CAST (callnote.NOTE as VARCHAR(100))
order by customer.NAME


我希望每个客户名称仅收到一个记录(最后一个注释)。 (有789行,当我在查询中保留“ CAST(callnote.NOTE为VARCHAR(100))”时得到的行)我得到的是我相信的是每个联系人的最后一个注释(超过11,500行)。我已经花了好几个小时动脑筋,并且重写了这么多次。客户表和Callnote表之间没有公共列。我如何才能仅显示每个客户的最后一个音符?

最佳答案

我假设您要从最大Callnote ID的注释中获取注释?所以像这样:

Select
  C.name,
  n.ID,
  n.NOTE
from
  CUSTOMER c
  outer apply (
    select top 1
      callnote.ID,
      CAST (callnote.NOTE as VARCHAR(100))
    from
      CONTACT
      join callnote
        on contact.ID=callnote.CONTACT_ID and callnote.TYPE='n'
    where
      c.ID=contact.CUSTOMER_ID
    order by
      callnote.ID desc) n
where
  c.AcctClass>='1'
order by
  c.NAME


因此,这总是从该客户的最大ID中获取行。希望语法可以,不能真正测试。

关于mysql - 分组依据子句不分组依据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29247001/

10-10 10:53