在第一行中选择OrderBy

时间:2018-05-24 09:28:27

标签: oracle

我正在执行以下查询,但是在最后一个子查询(里程数)上由于ORDER BY:“ORA-00907:缺少右括号”我收到以下错误,如果我删除了ORDER BY它运作良好。

SELECT /* DATE OF THE ROUTE */
       {GPS}.[DateTime],           
       /* ROUTE DESCRIPTION */                                     
       {Route}.[Description],
       /* NAME OF THE DRIVER */  
       {Driver}.[Name],                                                 
       /* VEHICLE LICENSE PLATE */
       {Vehicle}.[Registration],
       /* QUANTITY OF STOPS */
       (SELECT COUNT({RouteStop}.[RouteId])
          FROM {RouteStop}
         WHERE {RouteStop}.[RouteId] = {GPS}.[RouteId]) AS StopCount,
       /* AMOUNT OF FUEL */
       (SELECT SUM(FUEL.[Value])
          FROM {GPS} FUEL     
         WHERE {GPS}.[RouteId] = FUEL.[RouteId]
           AND FUEL.[EventTypeId] = 23) FuelAmount, /* Event Fuel */
       /* ROUTE STARTDATETIME */
       {GPS}.[DateTime] AS ROUTESTARTDATETIME,
       /* ROUTE ENDDATETIME */
       (SELECT ROUTEENDDATETIME.[DateTime]
          FROM {GPS} ROUTEENDDATETIME
         WHERE {GPS}.[RouteId] = ROUTEENDDATETIME.[RouteId]
           AND ROUTEENDDATETIME.[EventTypeId] = 5 /* Event Route Completed */
           AND ROWNUM = 1) AS ROUTEEND, 
       /* INITIAL MILEAGE */                         
       (SELECT MILEAGEBEGIN.[Value]
          FROM {GPS} MILEAGEBEGIN 
         WHERE {GPS}.[RouteId] = MILEAGEBEGIN.[RouteId] 
           AND MILEAGEBEGIN.[EventTypeId] = 21 /* Event Mileage */
           AND ROWNUM = 1
         ORDER BY MILEAGEBEGIN.[DateTime]
        ) AS INITIALMILEAGE

FROM {GPS}

INNER JOIN {Route}
    ON {GPS}.[RouteId] = {Route}.[Id]

 INNER JOIN {Driver}
    ON {GPS}.[DriverId] = {Driver}.[Id]

 INNER JOIN {Availability}
    ON {Driver}.[Id] = {Availability}.[DriverId]

 INNER JOIN {Vehicle}
    ON {Availability}.[VehicleId] = {Vehicle}.[Id]

 WHERE {GPS}.[EventTypeId] = 3 /* Event RouteStarted */

我尝试了以下方式,但是我收到了这个错误:“ORA-00936:缺少表达”。

SELECT /* DATE OF THE ROUTE */
       {GPS}.[DateTime],           

       /* INITIAL MILEAGE */                         
       SELECT TEST,'more test' FROM (SELECT MILEAGEBEGIN.[Value] AS TEST
                                       FROM {GPS} MILEAGEBEGIN 
                                      WHERE {GPS}.[RouteId] = MILEAGEBEGIN.[RouteId] 
                                        AND MILEAGEBEGIN.[EventTypeId] = 21 /* Event Mileage */
                                      ORDER BY MILEAGEBEGIN.[DateTime] ASC
                                    ) 
                              WHERE ROWNUM = 1 AS INITIALMILEAGE

  FROM {GPS}

 WHERE {GPS}.[EventTypeId] = 3 /* Event RouteStarted */

2 个答案:

答案 0 :(得分:0)

删除括号

SELECT /* DATE OF THE ROUTE */
       GPS.DateTime,           
       /* ROUTE DESCRIPTION */                                     
       Route.Description,
       /* NAME OF THE DRIVER */  
       Driver.Name,                                                 
       /* VEHICLE LICENSE PLATE */
       Vehicle.Registration,
       /* QUANTITY OF STOPS */
       (SELECT COUNT(RouteStop.RouteId)
          FROM RouteStop
         WHERE RouteStop.RouteId = GPS.RouteId) AS StopCount,
       /* AMOUNT OF FUEL */
       (SELECT SUM(FUEL.Value)
          FROM GPS FUEL     
         WHERE GPS.RouteId = FUEL.RouteId
           AND FUEL.EventTypeId = 23) FuelAmount, /* Event Fuel */
       /* ROUTE STARTDATETIME */
       GPS.DateTime AS ROUTESTARTDATETIME,
       /* ROUTE ENDDATETIME */
       (SELECT ROUTEENDDATETIME.DateTime
          FROM GPS ROUTEENDDATETIME
         WHERE GPS.RouteId = ROUTEENDDATETIME.RouteId
           AND ROUTEENDDATETIME.EventTypeId = 5 /* Event Route Completed */
           AND ROWNUM = 1) AS ROUTEEND, 
       /* INITIAL MILEAGE */                         
       (SELECT MILEAGEBEGIN.Value
          FROM GPS MILEAGEBEGIN 
         WHERE GPS.RouteId = MILEAGEBEGIN.RouteId 
           AND MILEAGEBEGIN.EventTypeId = 21 /* Event Mileage */
           AND ROWNUM = 1
         ORDER BY MILEAGEBEGIN.DateTime
        ) AS INITIALMILEAGE

FROM GPS

INNER JOIN Route
    ON GPS.RouteId = Route.Id

 INNER JOIN Driver
    ON GPS.DriverId = Driver.Id

 INNER JOIN Availability
    ON Driver.Id = Availability.DriverId

 INNER JOIN Vehicle
    ON Availability.VehicleId = Vehicle.Id

 WHERE GPS.EventTypeId = 3 /* Event RouteStarted */

其他查询:

SELECT /* DATE OF THE ROUTE */
       GPS.DateTime,           

       /* INITIAL MILEAGE */                         
      ( SELECT TEST  FROM (SELECT MILEAGEBEGIN.Value AS TEST
                                       FROM GPS MILEAGEBEGIN 
                                      WHERE GPS.RouteId = MILEAGEBEGIN.RouteId 
                                        AND MILEAGEBEGIN.EventTypeId = 21 /* Event Mileage */
                                      ORDER BY MILEAGEBEGIN.DateTime ASC
                                    ) 
                              WHERE ROWNUM = 1) AS INITIALMILEAGE

  FROM GPS

 WHERE GPS.EventTypeId = 3 /* Event RouteStarted */

答案 1 :(得分:0)

正确查询

        var texts = svg.selectAll("text")
            .data(data)
            .enter()
            .append("text")
            .attr ("x",function(d, i) { return (i * 30) + 50;})
            .attr ("y",function(d) { return 250 - (d.some_var * 50);})
            .attr("rotate", 315)
            .text(function(d){ return d.name; });