programing

SQL Server에서 ORDER BY 및 UNION 조합

elecom 2023. 7. 7. 18:34
반응형

SQL Server에서 ORDER BY 및 UNION 조합

테이블의 첫 번째 레코드와 테이블의 마지막 레코드를 하나의 결과 세트로 가져오려면 어떻게 해야 합니까?

이 쿼리 실패

SELECT TOP 1 Id,Name FROM Locations ORDER BY Id
UNION ALL
SELECT TOP 1 Id,Name FROM Locations ORDER BY Id DESC

도와드릴까요?

너의 것을 둬라.order by그리고.top문을 하위 항목으로:

select first.Id, first.Name 
from (
    select top 1 * 
    from Locations 
    order by Id) first
union all
select last.Id, last.Name 
from (
    select top 1 * 
    from Locations 
    order by Id desc) last
select * from (
SELECT TOP 1 Id,Name FROM Locations ORDER BY Id) X
UNION ALL
SELECT TOP 1 Id,Name FROM Locations ORDER BY Id DESC

SQL Server 2005 이상에서 작업하는 경우:

; WITH NumberedRows as (
    SELECT Id,Name,
       ROW_NUMBER() OVER (ORDER BY Id) as rnAsc,
       ROW_NUMBER() OVER (ORDER BY Id desc) as rnDesc
    FROM
        Locations
)
select * from NumberedRows where rnAsc = 1 or rnDesc = 1

이것이 원래 쿼리와 같지 않은 유일한 위치는 테이블에 행이 하나만 있는 경우입니다(이 경우 내 대답은 한 행을 반환하고, 당신의 대답은 같은 행을 두 번 반환합니다).

SELECT TOP 1 Id as sameColumn,Name FROM Locations 
UNION ALL
SELECT TOP 1 Id as sameColumn,Name FROM Locations ORDER BY sameColumn DESC

언급URL : https://stackoverflow.com/questions/5551064/combining-order-by-and-union-in-sql-server

반응형