SQL Server: ORDER BY in subquery with UNION

后端 未结 4 1027
面向向阳花
面向向阳花 2020-12-11 15:43

i have two queries being combined with a UNION ALL1:

--Query 1
SELECT Flavor, Color
FROM Friends

 

<         


        
4条回答
  •  臣服心动
    2020-12-11 16:12

    I know that you could use a CTE (Common Table Expression) , where you can use your order by for the CTE.

    ;with results as
    (
    
        SELECT Cassettes.CassetteNumber,
        LastCassetteTransfers.Amount,
        CassetteTransfers.CreatedDate
        FROM Cassettes
        INNER JOIN LastCassetteTransfers
        ON Cassettes.CassetteGUID = LastCassetteTransfers.CassetteGUID
    
        UNION ALL
    
        SELECT Cassettes.CassetteNumber,
        (
           SELECT TOP 1 CassetteTransfers.Amount
           FROM CassetteTransfers
           WHERE CassetteTransfers.CassetteGUID = Cassettes.CassetteGUID
           AND CassetteTransfers.Mode = 'ctmLoad'
        ) AS Amount,
        CassetteTransfers.CreatedDate
        FROM Cassettes
    
    )
    
    SELECT CassetNumber, Amount
    FROM results
    ORDER BY CassetteTransfers.CreatedDate DESC, CassetteTransfers.Amount
    

    That should help. The important thig is to make sure that you have your order by columns returned in the inner query (in this case the CTE).

    Let me know how it works.

提交回复
热议问题