Sort for specific column by keep other column grouped SELECT 
      CurrencyCodeFrom,
      CurrencyCodeTo, 
      MidRevalRate,
      MultiplierRate,
      RevalRate,
      CurrencyMarketCode,
      Added, 
      Modified, 
      UpdateReason
FROM 
     [InsightWarehouse].[dbo].[DimCurrency] as dc
 INNER  JOIN 
     [InsightWarehouse].[dbo].[FactCurrency] as fc 
     ON fc.CurrencyId = dc.CurrencyId
     AND fc.BusinessDate  = '2018-11-27'
     AND ( CurrencyCodeFrom &lt;&gt; 'KHR' OR CurrencyCodeTo &lt;&gt; 'KHR')


Result

CurrencyCodeFrom    CurrencyCodeTo  MidRevalRate    MultiplierRate  RevalRate   CurrencyMarketCode
THB                 KHR             122.500000000   122.500000000   1.000000000 1
THB                 KHR             122.750000000   122.750000000   1.000000000 10
THB                 KHR             122.500000000   122.500000000   1.000000000 3
THB                 KHR             122.750000000   122.750000000   1.000000000 5
THB                 KHR             122.750000000   122.750000000   1.000000000 7
THB                 KHR             122.750000000   122.750000000   1.000000000 9
USD                 KHR             4035.000000000  4035.000000000  1.000000000 1
USD                 KHR             4047.500000000  4047.500000000  1.000000000 10
USD                 KHR             4035.000000000  4035.000000000  1.000000000 3
USD                 KHR             4047.500000000  4047.500000000  1.000000000 5
USD                 KHR             4047.500000000  4047.500000000  1.000000000 7
USD                 KHR             4047.500000000  4047.500000000  1.000000000 9


I want to sort CurrencyMarketCode DESC by keep it group CurrencyCodeFrom    CurrencyCodeTo    

Should be

CurrencyCodeFrom    CurrencyCodeTo  MidRevalRate    MultiplierRate  RevalRate   CurrencyMarketCode

THB                 KHR             122.500000000   122.500000000   1.000000000 1
THB                 KHR             122.500000000   122.500000000   1.000000000 3
THB                 KHR             122.750000000   122.750000000   1.000000000 5
THB                 KHR             122.750000000   122.750000000   1.000000000 7
THB                 KHR             122.750000000   122.750000000   1.000000000 9
THB                 KHR             122.750000000   122.750000000   1.000000000 10

USD                 KHR             4035.000000000  4035.000000000  1.000000000 1
USD                 KHR             4035.000000000  4035.000000000  1.000000000 3
USD                 KHR             4047.500000000  4047.500000000  1.000000000 5
USD                 KHR             4047.500000000  4047.500000000  1.000000000 7
USD                 KHR             4047.500000000  4047.500000000  1.000000000 9
USD                 KHR             4047.500000000  4047.500000000  1.000000000 10
Your comment 


  I want to sort CurrencyMarketCode DESC by keep it group
  CurrencyCodeFrom CurrencyCodeTo


doesn't match your result because CurrencyMarketCode in your result is in ascending order.

As @ypercube commented, why doesn't a simple

ORDER BY CurrencyCodeFrom, CurrencyCodeTo, CurrencyMarketCode solve your problem?



--demo setup
drop table if exists table1
go
CREATE TABLE Table1 (
    [CurrencyCodeFrom] VARCHAR(3)
    ,[CurrencyCodeTo] VARCHAR(3)
    ,[MidRevalRate] DECIMAL(20, 9)
    ,[MultiplierRate] DECIMAL(20, 9)
    ,[RevalRate] DECIMAL(20, 9)
    ,[CurrencyMarketCode] int
    );    
INSERT INTO Table1
    ([CurrencyCodeFrom], [CurrencyCodeTo], [MidRevalRate], [MultiplierRate], [RevalRate], [CurrencyMarketCode])
VALUES
    ('THB', 'KHR', 122.500000000, 122.500000000, 1.000000000, 1),
    ('THB', 'KHR', 122.750000000, 122.750000000, 1.000000000, 10),
    ('THB', 'KHR', 122.500000000, 122.500000000, 1.000000000, 3),
    ('THB', 'KHR', 122.750000000, 122.750000000, 1.000000000, 5),
    ('THB', 'KHR', 122.750000000, 122.750000000, 1.000000000, 7),
    ('THB', 'KHR', 122.750000000, 122.750000000, 1.000000000, 9),
    ('USD', 'KHR', 4035.000000000, 4035.000000000, 1.000000000, 1),
    ('USD', 'KHR', 4047.500000000, 4047.500000000, 1.000000000, 10),
    ('USD', 'KHR', 4035.000000000, 4035.000000000, 1.000000000, 3),
    ('USD', 'KHR', 4047.500000000, 4047.500000000, 1.000000000, 5),
    ('USD', 'KHR', 4047.500000000, 4047.500000000, 1.000000000, 7),
    ('USD', 'KHR', 4047.500000000, 4047.500000000, 1.000000000, 9)
;

SELECT *
FROM table1
ORDER BY CurrencyCodeFrom
    ,CurrencyCodeTo
    ,CurrencyMarketCode;




The results seem your match your desired outcome.

| CurrencyCodeFrom | CurrencyCodeTo | MidRevalRate   | MultiplierRate | RevalRate   | CurrencyMarketCode |
|------------------|----------------|----------------|----------------|-------------|--------------------|
| THB              | KHR            | 122.500000000  | 122.500000000  | 1.000000000 | 1                  |
| THB              | KHR            | 122.500000000  | 122.500000000  | 1.000000000 | 3                  |
| THB              | KHR            | 122.750000000  | 122.750000000  | 1.000000000 | 5                  |
| THB              | KHR            | 122.750000000  | 122.750000000  | 1.000000000 | 7                  |
| THB              | KHR            | 122.750000000  | 122.750000000  | 1.000000000 | 9                  |
| THB              | KHR            | 122.750000000  | 122.750000000  | 1.000000000 | 10                 |
| USD              | KHR            | 4035.000000000 | 4035.000000000 | 1.000000000 | 1                  |
| USD              | KHR            | 4035.000000000 | 4035.000000000 | 1.000000000 | 3                  |
| USD              | KHR            | 4047.500000000 | 4047.500000000 | 1.000000000 | 5                  |
| USD              | KHR            | 4047.500000000 | 4047.500000000 | 1.000000000 | 7                  |
| USD              | KHR            | 4047.500000000 | 4047.500000000 | 1.000000000 | 9                  |
| USD              | KHR            | 4047.500000000 | 4047.500000000 | 1.000000000 | 10                 |