【问题标题】:How to join next row in Cloud Spanner如何在 Cloud Spanner 中加入下一行
【发布时间】:2018-03-16 00:26:57
【问题描述】:

如何在 Cloud Spanner 中加入左下一行。

我想计算每个司机开了多少公里。

我的桌子是这样的:

vehicle_id | driver_id | odometer
     1     |      1    |     10  
     1     |      1    |     20  
     1     |      2    |     20  
     1     |      2    |     40  
     1     |      1    |     40  
     1     |      1    |     50  
     2     |      1    |     10  
     2     |      1    |     20  
     2     |      2    |     20  
     2     |      2    |     30  
     2     |      1    |     30 
     2     |      1    |     80 
     2     |      2    |     80 
     2     |      2    |     120 

结果应该是:

 driver_id | total_mileage
      1    |     80  
      2    |     70  

我的解决办法是:

 SUM (mileage) 
 FROM (SELECT (odometer2-odometer) AS mileage
       FROM (SELECT vehicle_id , odometer ,driver_id , 
             NEXT.driver_id AS driver_id 2, NEXT.odometer AS odometer2  FROM Table

             **JOIN NEXT ROW** AS NEXT

             )
       WHERE driver_id=driver_id2
       )
 GROUP BY driver_id
vehicle_id | driver_id | odometer | driver_id2 | odometer2 |mileage
     1     |      1    |     10   |      1    |     20    |   10  
     1     |      1    |     20   |      2    |     20    |   - 
     1     |      2    |     20   |      2    |     40    |   20 
     1     |      2    |     40   |      1    |     40    |   - 
     1     |      1    |     40   |      1    |     50    |   10 
     1     |      1    |     50   |     -     |     -     |   -    
     2     |      1    |     10   |      1    |     20    |   10  
     2     |      1    |     20   |      2    |     20    |   - 
     2     |      2    |     20   |      2    |     30    |   10 
     2     |      2    |     30   |      1    |     30    |   - 
     2     |      1    |     30   |      1    |     80    |   50 
     2     |      1    |     80   |      2    |     80    |   - 
     2     |      2    |     80   |      2    |     120   |   40 
     2     |      2    |     120  |     -     |     -     |   - 

在 Cloud Spanner 函数中,Row_number、OVER、LAG 不存在。 我的问题是如何加入 Cloud Spanner 的左下一行?

【问题讨论】:

    标签: join google-cloud-platform row-number google-cloud-spanner


    【解决方案1】:

    您正在寻找 PIVOT 数据。这不是直接在Cloud Spanner SQL 中可行的——您需要对数据进行后处理以影响数据透视。

    【讨论】:

    • 最初说“不可能直接在 SQL 中”——这几乎适用于任何 SQL 变体。 MSSQL 除外。
    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2020-11-12
    • 2017-07-06
    • 2021-12-10
    • 2017-07-09
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多