如果客户在同一地点服务,则每人每天一项服务

时间:2017-04-04 05:59:08

标签: sql sql-server sql-server-2008 reporting-services

我如何编写查询以检索显示每人每天一项服务的数据,如果客户在同一注册地点提供服务,如果同一天在不同的注册地点提供相同的客户,则应显示该服务。

PS:el =注册地点,sl =服务地点,服务日期是datetime2,因此呈现不同的时间。

示例原始数据

ClientID  serviceID   clientname       sl          el         service date
  1         112         sam          atlanta     atlanta       04/01/2017
  1         113         sam          atlanta     atlanta       04/01/2017
  1         114         sam          augusta     atlanta       04/01/2017
  1         115         sam          atlanta    montgomery     04/01/2017
  1         116         sam          atlanta    atlanta        04/02/2017
  2         117         joy          delaware   delaware       04/02/2017
  2         118         joy          delaware   delaware       04/02/2017

Expected result for service dates between 04/01/2017 and 04/03/2017

ClientID  serviceID   clientname       sl          el         service date
  1         112         sam          atlanta     atlanta       04/01/2017
  1         114         sam          augusta     atlanta       04/01/2017
  1         115         sam          atlanta    montgomery     04/01/2017
  1         116         sam          atlanta    atlanta        04/02/2017
  2         118         joy          delaware   delaware       04/02/2017

1 个答案:

答案 0 :(得分:0)

此处的一个选项是使用GROUP BY来解决重复记录。如果我正确地阅读了您的问题,每个客户,服务地点,注册地点和指定日期应该只有一条记录。这意味着我们应该GROUP BY以下列:

ClientID, clientname, sl, el, [service date]

请注意,我还包含clientname,以便它可以显示在结果集中。对于serviceID,我随意选择每组的最小值,这似乎与您的期望一致。

SELECT
    ClientID,
    MIN(serviceID) AS serviceID,
    clientname,
    sl,
    el,
    [service date]
FROM yourTable
GROUP BY
    ClientID,
    clientname,
    sl,
    el,
    [service date]