[SQL] ORDER BY 절은 뷰, 인라인 함수, 파생 테이블, 하위 쿼리 및 공통 테이블 표현식에서 유효하지 않습니다
SQLORDER BY 절은 뷰, 인라인 함수, 파생 테이블, 하위 쿼리 및 공통 테이블 표현식에서 유효하지 않습니다
다음 쿼리를 실행하는 동안 나는 말했다 오류 위를 얻고있다. 사람은 모양과 내가 여기에 잘못을하고있는 중이 야 무엇을 말해 주시겠습니까?
SELECT
*
FROM (
SELECT
Stockmain.VRNOA,
item.description as item_description,
party.name as party_name,
stockmain.vrdate,
stockdetail.qty,
stockdetail.rate,
stockdetail.amount,
ROW_NUMBER() OVER (ORDER BY VRDATE) AS RowNum
FROM StockMain
INNER JOIN StockDetail
ON StockMain.stid = StockDetail.stid
INNER JOIN party
ON party.party_id = stockmain.party_id
INNER JOIN item
ON item.item_id = stockdetail.item_id
WHERE stockmain.etype='purchase'
ORDER BY VRDATE DESC
) AS MyDerivedTable
WHERE
MyDerivedTable.RowNum BETWEEN 1 and 5
해결법
-
==============================
1.당신은 절 이미 ROW_NUMBER () OVER (ORDER BY VRDATE DESC)에 사용했기 때문에 WHERE 후 내부 쿼리에서 ORDER BY를 사용할 필요가 없습니다.
당신은 절 이미 ROW_NUMBER () OVER (ORDER BY VRDATE DESC)에 사용했기 때문에 WHERE 후 내부 쿼리에서 ORDER BY를 사용할 필요가 없습니다.
SELECT * FROM ( SELECT Stockmain.VRNOA, item.description as item_description, party.name as party_name, stockmain.vrdate, stockdetail.qty, stockdetail.rate, stockdetail.amount, ROW_NUMBER() OVER (ORDER BY VRDATE DESC) AS RowNum --< ORDER BY FROM StockMain INNER JOIN StockDetail ON StockMain.stid = StockDetail.stid INNER JOIN party ON party.party_id = stockmain.party_id INNER JOIN item ON item.item_id = stockdetail.item_id WHERE stockmain.etype='purchase' ) AS MyDerivedTable WHERE MyDerivedTable.RowNum BETWEEN 1 and 5
-
==============================
2.
ORDER BY column OFFSET 0 ROWS
놀랍게도 작업, 어떤 이상한 기능을한다.
나중에 다시 주문을 긴 쿼리 일시적으로 "저장"할 수있는 방법으로 CTE와 더 큰 예 :
;WITH cte AS ( SELECT .....long select statement here.... ) SELECT * FROM ( SELECT * FROM ( -- necessary to nest selects for union to work with where & order clauses SELECT * FROM cte WHERE cte.MainCol= 1 ORDER BY cte.ColX asc OFFSET 0 ROWS ) first UNION ALL SELECT * FROM ( SELECT * FROM cte WHERE cte.MainCol = 0 ORDER BY cte.ColY desc OFFSET 0 ROWS ) last ) as unionized ORDER BY unionized.MainCol desc -- all rows ordered by this one OFFSET @pPageSize * @pPageOffset ROWS -- params from stored procedure for pagination, not relevant to example FETCH FIRST @pPageSize ROWS ONLY -- params from stored procedure for pagination, not relevant to example
우리가 얻을 그래서 모든 결과는 MainCol으로 정렬
그러나 MainCol = 1 GET과 결과는 ColX으로 정렬
그리고 MainCol = 0 GET과 결과는 ColY으로 정렬
from https://stackoverflow.com/questions/18031421/the-order-by-clause-is-invalid-in-views-inline-functions-derived-tables-subqu by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PL / SQL 블록 문제 : 없음 데이터 오류를 발견 (0) | 2020.06.03 |
---|---|
[SQL] 어떻게 SQL 단지 하나의 필드에 중복없이 레코드를 선택하려면? (0) | 2020.06.03 |
[SQL] T-SQL은 : UPDATE 문에 CASE를 사용하여 조건에 따라 특정 열을 업데이트 (0) | 2020.06.03 |
[SQL] 어떻게 SQL Server Management Studio의 테이블에서 신속하게 편집 값? (0) | 2020.06.03 |
[SQL] MySQL의 해제 및 키 사용 (0) | 2020.06.03 |