【发布时间】:2020-03-25 05:02:50
【问题描述】:
我有一个查询要从多个表中获取数据。但不知何故,由于一列,我从数据库中得到了重复的条目。
查询是:
SELECT
BH.BusinessName, AppointmentStartTime, AppointmentEndTime, AppointmentStatus,
AppointmentFor, AppointmentForID, AppointmentStatus, S.ServiceName
from Appointment A
INNER JOIN BusinessHost BH ON A.BusinessHostID = BH.BusinessHostID
INNER JOIN BusinessHostService BHS ON BHS.BusinessHostID=BH.BusinessHostID
INNER JOIN Services S ON S.ServiceID=BHS.ServiceID
输出是这样的:
+ -------------+----------+------------ --------+-------------------+----------------+---- --------------+-------------------+---------------- ------+ |企业名称 |预约开始时间 |预约结束时间 |预约状态 |预约 | AppointmentForID |预约状态 |服务名称 | + -------------+----------+------------ --------+-------------------+----------------+---- --------------+-------------------+---------------- ------+ |阿米特父子 | 02:00:00.0000000 | 02:15:00.0000000 |已添加 |摩托车 | 1006 |已添加 |树木栽培 | |阿米特父子 | 02:00:00.0000000 | 02:15:00.0000000 |已添加 |摩托车 | 1006 |已添加 |园林绿化服务 | |罗希特父子 | 02:30:00.0000000 | 02:45:00.0000000 |已添加 |摩托车 | 1006 |已添加 |树木栽培 | |罗希特父子 | 02:30:00.0000000 | 02:45:00.0000000 |已添加 |摩托车 | 1006 |已添加 |园林绿化服务 | + -------------+----------+------------ --------+-------------------+----------------+---- --------------+-------------------+---------------- ------+您能帮我编写查询以获得所需的结果,例如:
+ -------------+----------+------------ --------+-------------------+----------------+---- --------------+-------------------+---------------- ---------------------+ |企业名称 |预约开始时间 |预约结束时间 |预约状态 |预约 | AppointmentForID |预约状态 |服务名称 | + -------------+----------+------------ --------+-------------------+----------------+---- --------------+-------------------+---------------- ---------------------+ |阿米特父子 | 02:30:00.0000000 | 02:45:00.0000000 |已添加 |摩托车 | 1006 |已添加 |树木栽培、园林绿化服务 | |罗希特父子 | 02:30:00.0000000 | 02:45:00.0000000 |已添加 |摩托车 | 1006 |已添加 |树木栽培、园林绿化服务 | + -------------+----------+------------ --------+-------------------+----------------+---- --------------+-------------------+---------------- ---------------------+【问题讨论】:
-
您正在寻找具有字符串连接的聚合。这在其他具有聚合函数的 DBMS 中非常简单,例如
LISTAGG、GROUP_CONCAT或STRING_AGG。 SQL Server没有这样的功能,但是可以模拟,比较尴尬。只需谷歌string-aggregation sql-server:-) -
糟糕,更新:自 2017 版起,SQL Server 确实有
STRING_AGG:docs.microsoft.com/de-de/sql/t-sql/functions/…
标签: sql sql-server string-aggregation