0

エラーが発生しています

TOPまたはFOR XMLも指定されていない限り、ビュー、インライン関数、派生テーブル、サブクエリ、および共通テーブル式では、ORDER BY句は無効です。

以下のコードでは、

SELECT      MIDDLE.MODEL AS Model,  
                    MIDDLE.MANUFACTURER AS Manufacturer,
                    {fn CONCAT(CAST(AVG(ABS(MIDDLE.AVG_YEAR)/365) as Decimal(10, 2)), ' Years')} AS AverageAge, 
                    {fn CONCAT('$',CAST(SUM(MIDDLE.ACQCOST) as Decimal(15,2)))} AS TotalAcquistionCost, 
                    {fn CONCAT('$',CAST(AVG(MIDDLE.ACQCOST) as Decimal(15,2)))} AS AverageAcquistionCost,  
                    {fn CONCAT('$',CAST(SUM(MIDDLE.SUMofSPENT) as Decimal(15,2)))} AS TotalRepairCost, 
                    {fn CONCAT('$',CAST(AVG(MIDDLE.SUMofSPENT) as Decimal(15,2)))} AS AverageRepairCost 
        FROM 

            (SELECT   
                    PRE.Model AS MODEL, 
                    PRE.Manufacturer AS MANUFACTURER, 
                    PRE.Avg_Year AS AVG_YEAR, 
                    PRE.AcqCost AS ACQCOST, 
                    SUM(PRE.Spent) AS SUMofSPENT FROM 
             (SELECT  

                    E.sn AS SerialNumber, 
                    E.mdl AS Model, 
                    DATEDIFF(year, E.acq, GETDATE()) AS Avg_Year, 
                    E.cost AS AcqCost,  
                    E.mfr AS Manufacturer, 
                    FR.spent AS Spent 
                    FROM rme_failrepair AS FR 


            INNER JOIN rme_endo AS E 
                    ON FR.acq_id = E.acq_id 
                    AND FR.en_sn = E.en_sn
            WHERE E.mdl = @mdl

                     ORDER BY SerialNumber, Spent )AS PRE 
                     GROUP BY PRE.SerialNumber) AS MIDDLE
4

2 に答える 2

0

コメントで述べたように、これはクエリである必要があります。また、GROUP BY 句も間違っていることに注意してください。GROUP BY に表示されない多くの列を SELECT に含めました。

 SELECT      
        MIDDLE.MODEL AS Model,  
        MIDDLE.MANUFACTURER AS Manufacturer,
        {fn CONCAT(CAST(AVG(ABS(MIDDLE.AVG_YEAR)/365) as Decimal(10, 2)), ' Years')} AS AverageAge, 
        {fn CONCAT('$',CAST(SUM(MIDDLE.ACQCOST) as Decimal(15,2)))} AS TotalAcquistionCost, 
        {fn CONCAT('$',CAST(AVG(MIDDLE.ACQCOST) as Decimal(15,2)))} AS AverageAcquistionCost,  
        {fn CONCAT('$',CAST(SUM(MIDDLE.SUMofSPENT) as Decimal(15,2)))} AS TotalRepairCost, 
        {fn CONCAT('$',CAST(AVG(MIDDLE.SUMofSPENT) as Decimal(15,2)))} AS AverageRepairCost 
FROM 
(
    SELECT  
        E.sn AS SerialNumber
        E.mdl AS Model, 
        DATEDIFF(year, E.acq, GETDATE()) AS Avg_Year, 
        E.cost AS AcqCost,  
        E.mfr AS Manufacturer, 
        SUM(FR.Spent) AS SUMofSPENT
    FROM rme_failrepair AS FR INNER JOIN rme_endo AS E 
        ON FR.acq_id = E.acq_id AND FR.en_sn = E.en_sn
    WHERE E.mdl = @mdl
    GROUP BY 
        E.sn, E.mdl, DATEDIFF(year, E.acq, GETDATE()), E.cost, E.mfr
) AS MIDDLE
于 2016-05-02T18:05:49.890 に答える