繁体   English   中英

根据两个表值合并 SQL 表中的行

[英]Merge Rows in SQL Table based on two table values

我有一张包含旅行详细信息的表格。 详细信息以分布式方式保存。 我需要合并基于源和目标的行。 我的来源是 A,最终目的地是 D,我需要根据旅行日期将所有 3 行合并为 1 行,时间和距离之和。

表格详细信息和预期输出

我尝试使用连接但无法根据条件进行操作。 不确定如何根据另一个表的值组合一个表的行。

您可以使用LEFT JOIN语句然后聚合:

SELECT Table2.Date,
       Table2.CarID,
       Table2.Source,
       Table2.Destination,
       SUM(Table1.Distance) AS Distance,
       SUM(Table1.[Time(Hours)]) AS [Time(Hours)]
FROM Table2
LEFT JOIN Table1
     ON  (Table1.Source BETWEEN Table2.Source AND Table2.Destination
     OR  Table1.Destination BETWEEN Table2.Source AND Table2.Destination)
     AND Table2.Date = Table1.Date
     AND Table2.CarID = Table1.CarID
GROUP BY Table2.Date,
         Table2.CarID,
         Table2.Source,
         Table2.Destination

这假设您的SourceDestination永远不会重叠 - 就像您提供的示例一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM