Tsql 使用SQL按时差条件连接
假设我有一张这样的桌子:Tsql 使用SQL按时差条件连接,tsql,sql-server-2012,Tsql,Sql Server 2012,假设我有一张这样的桌子: unitID unitName unitGroupName unitDate unitStartTime unitEndTime -------------------------------------------------------------------------- 1 unitA groupA 1/1/2019 9:00pm 11:00pm 1 unitA groupB
unitID unitName unitGroupName unitDate unitStartTime unitEndTime
--------------------------------------------------------------------------
1 unitA groupA 1/1/2019 9:00pm 11:00pm
1 unitA groupB 1/1/2019 11:10pm 11:45pm
1 unitA groupC 1/1/2019 11:55pm 1:20am
Name Date startTime endTime
-------------------------------------------------------------
groupA;groupB;groupC 1/1/2019 9:00pm 1:20am
有没有办法有条件地连接行
条件如下:
- 单位必须都是一样的
- 单位日期必须全部相同
- 单位时间必须彼此间隔20分钟-->这意味着,如果组A在晚上11:00结束,组B在晚上11:10开始,则会发生串联
unitID unitName unitGroupName unitDate unitStartTime unitEndTime
--------------------------------------------------------------------------
1 unitA groupA 1/1/2019 9:00pm 11:00pm
1 unitA groupB 1/1/2019 11:10pm 11:45pm
1 unitA groupC 1/1/2019 11:55pm 1:20am
Name Date startTime endTime
-------------------------------------------------------------
groupA;groupB;groupC 1/1/2019 9:00pm 1:20am
SQL可以实现这样的功能吗
这是我根据@Tigerjz32的答案使用的查询
DECLARE @value VARCHAR(max) = NULL
SELECT @value = COALESCE(@value + ';' + ug.unitGroupName, ug.unitGroupName)
SELECT @value as Name,
MIN(ue.unitDate) as unitDate,
MIN(ue.unitStartTime) as unitStartTime,
MIN(ue.unitEndTime)as unitEndTime,
u.unitName
FROM unitEvents ue
LEFT JOIN unitGroups ug ON ug.unitID = ue.unitID
LEFT JOIN units u ON ug.unitID = u.unitID
WHERE u.unitYear = 2018
AND ue.eventWeek between '12/1/2018' and '12/7/2018'
谢谢 这是一个肮脏的方法。如果你想变得更优雅,你应该仔细研究
输入错误警报-它是串联的-而不是“contatenate”…我尝试了一下,它产生了以下错误:多部分标识符“u.unitName”无法绑定。我把这个问题添加到上面的问题中。谢谢请试试这个解决方案