SQL根据条件组合多行

时间:2015-05-14 11:26:37

标签: sql sql-server group-by

我有一张公共交通用户的单独旅行交易表 当旅行者从一条线路到另一条线路时,它们会产生两种截然不同的交易 幸运的是,源数据已经包含共享密钥(UniqueTravelID)

class PaintingComponent extends JPanel
{
    public void paintComponent(Graphics g, int a)
    {       
        raster.setPixel( 12, a, clr ); 
    }//paintComponent(Graphics g)
}

我想根据最早的Checkin和同一日期的最新结帐时间合并多个不同的交易

Date     | MediumID | UniqueTravelID | CiTime | CoTime | CiLocationID | CoLocationID  
1-1-2015 | 1001     | 99             | 08:10  | 08:15  | 5001         | 5050  
1-1-2015 | 1001     | 99             | 08:16  | 08:20  | 5001         | 5090  

2 个答案:

答案 0 :(得分:0)

我还没有测试过这个......但

  1. 创建按日期分组的视图和UniqueTravelID,用于标识该日期的唯一日记,包括MIN CiTime和MAX CoTime,但不包括地点

  2. 使用原始表格加入视图两次,一个链接在Min CiTime和UniqueTravelID上,另一个链接在Max CoTime和UniqueTravelID上,这应该会给你答案。

  3. 如果您想了解更多信息,请告诉我

答案 1 :(得分:0)

我认为这就是你要找的东西

SELECT DISTINCT
  Date, 
  MediumID, 
  UniqueTravelID, 
  MIN(CiTime) OVER (PARTITION BY Date ORDER BY Date ASC) CiTime,
  MAX(CoTime) OVER (PARTITION BY Date ORDER BY Date ASC) CoTime, 
  FIRST_VALUE(CiLocationID) OVER (PARTITION BY Date ORDER BY Date ASC) CiLocationID,
  LAST_VALUE(CoLocationID) OVER (PARTITION BY Date ORDER BY Date ASC) CoLocationID
FROM
  table

在这个SQL Fiddler中,你可以找到一个有效的演示 这仅适用于SQL Server 2012 +

希望这有帮助