Dlaczego może nie działać sortowanie w SQL?

0

Witam.
Wie ktoś dlaczego takie zapytanie nie sortuje mi po dacie ?
Zapytanie jest nieposortowane, daty są w losowej kolejności. W tabeli #Results przechowuję dane zwrócone za pomocą 3 SELECT połączonych klauzulą UNION ALL. Chociaż te rzeczy nie powinny mieć dalej wpływu na posortowanie tego po dacie...

        SELECT * FROM (
        select TOP 100 PERCENT RowNumber,
            Id, 
            CreatedOn, 
            Name, 
            Description, 
            Address, 
            UserName, 
            Pet, 
            FileName, 
            Type, 
            TypeName  
        from #Results  
        order by CreatedOn desc
        ) T

już nie za bardzo wiem co tu na to wpływa :)

0

order by ma być przy "ostatnim" czy też "głównym" zapytaniu a nie przy podzapytaniu

0

Ok a co w takim przypadku? UNION ALL zbieram dane do tabeli tymczasowej #Results z kilku innych zapytań, następnie chcę posortować całą tabelę result a na końcu wybrać 10 elementów już posortowanych. Jak order daję za WHERE to mi sortuje ale tylko te 10 ostatnich zwróconych elementów

        SELECT * FROM (
        select TOP 100 PERCENT RowNumber,
            Id, 
            CreatedOn, 
            Name, 
            Description, 
            Address, 
            UserName, 
            Pet, 
            FileName, 
            Type, 
            TypeName  
        from #Results  
        order by CreatedOn desc
        ) T
        WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1 
2
  1. jaki sens ma to TOP 100 PERCENT - przecież to wybiera 100% wierszy
  2. jeśli to jest mssql (bo oczywiście nie napisałeś) to
SELECT * FROM ( 
  SELECT 
    Id, 
    CreatedOn, 
    Name, 
    Description, 
    Address, 
    UserName, 
    Pet, 
    FileName, 
    Type, 
    TypeName, 
    ROW_NUMBER() OVER (ORDER BY CreatedOn) as row 
  FROM 
    #Results
 ) a 
WHERE 
  row BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
ORDER BY
  CreatedOn
0

MSSQL, TOP 100 PERCENT pojawiło się jako jedna z sugestii z tego forum z podobnego tematu. Docelowo nie musi tam być, nic nie zmienia

1 użytkowników online, w tym zalogowanych: 0, gości: 1