我如何编写查询以检索显示每人每天一项服务的数据,如果客户在同一注册地点提供服务,如果同一天在不同的注册地点提供相同的客户,则应显示该服务。
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
答案 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]