[SQL] CASE WHEN 문 ORDER BY 절에 대한
SQLCASE WHEN 문 ORDER BY 절에 대한
나는 SQL Server 2008 R2를 사용하고 있습니다.
나는 기반 우선 순위 테이블의 레코드를 정렬 할 수 있습니다.
나는 언제 문 ORDER BY 절에 CASE를 사용하고 있도록. ORDER BY 절은 다음과 같다 :
ORDER BY
CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount desc, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
CASE WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount desc, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
Case WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount DESC, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
CASE WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount DESC, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
Case WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount DESC, TblList.LastName ASC, TblList.FirstName ASC, Patlist.MiddleName ASC END
그러나 키워드 '내림차순'근처의 구문이 잘못을 준다
모든 솔루션?
또한, 저는 할 수 있습니다 :
TblList.PinRequestCount <> 0 and TblList.HighCallAlertCount <> 0 and
TblList.HighAlertCount <> 0` and TblList.MediumCallAlertCount <> 0 and
TblList.MediumAlertCount <> 0
같은 시간에.
해결법
-
==============================
1.CASE 표현식 - 그것은 (행 당) 단일 스칼라 값을 반환합니다. 그것은 SELECT 문의 ORDER BY 절과 같은 다른 뭔가의 구문 분석 트리의 복잡한 부분을 반환 할 수 없습니다.
CASE 표현식 - 그것은 (행 당) 단일 스칼라 값을 반환합니다. 그것은 SELECT 문의 ORDER BY 절과 같은 다른 뭔가의 구문 분석 트리의 복잡한 부분을 반환 할 수 없습니다.
그냥 필요한 것 같습니다 :
ORDER BY CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount END desc, CASE WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount END desc, Case WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount END DESC, CASE WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount END DESC, Case WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount END DESC, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC
또는 가능성 :
ORDER BY CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount END desc, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC
그것은 어떤 샘플 데이터를 공급하지 않음) (또는 뭔가 다른)하지 당신이 달성하려는 실제 어떤 종류의 순서 설명, 그리고 B 당신이) 당신이를했습니다 때문에 찾고있는 것입니다 위의하는 말 좀 까다로운 우리는 당신이 달성하기 위해 노력하고 실제 정렬 순서를 추론하려고 시도 할 수있는 결과를 기대했다.
이것은 우리가 찾고있는 해답이 될 수 있습니다 :
ORDER BY CASE WHEN TblList.PinRequestCount <> 0 THEN 5 WHEN TblList.HighCallAlertCount <> 0 THEN 4 WHEN TblList.HighAlertCount <> 0 THEN 3 WHEN TblList.MediumCallAlertCount <> 0 THEN 2 WHEN TblList.MediumAlertCount <> 0 THEN 1 END desc, CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount END desc, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC
-
==============================
2.여기에서 또 다른 간단한 예 ..
여기에서 또 다른 간단한 예 ..
SELECT * FROM dbo.Employee ORDER BY CASE WHEN Gender='Male' THEN EmployeeName END Desc, CASE WHEN Gender='Female' THEN Country END ASC
-
==============================
3.당신은 각각의 경우를 마무리 END를 둘 필요 (내림차순 전)
당신은 각각의 경우를 마무리 END를 둘 필요 (내림차순 전)
-
==============================
4.
declare @OrderByCmd nvarchar(2000) declare @OrderByName nvarchar(100) declare @OrderByCity nvarchar(100) set @OrderByName='Name' set @OrderByCity='city' set @OrderByCmd= 'select * from customer Order By '+@OrderByName+','+@OrderByCity+'' EXECUTE sp_executesql @OrderByCmd
from https://stackoverflow.com/questions/19486882/case-when-statement-for-order-by-clause by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 HSQLDB 데이터베이스의 모든 테이블을 볼 수? (0) | 2020.05.10 |
---|---|
[SQL] JDBC를 사용하여 정수 열을 널 삽입 (0) | 2020.05.10 |
[SQL] 다른 열을 기준 서열의 PostgreSQL (0) | 2020.05.10 |
[SQL] 집계 함수없이 SQL 서버에서 피벗 쿼리를 만드는 방법 (0) | 2020.05.10 |
[SQL] SQL Server와 같은 포함 괄호 문자 (0) | 2020.05.10 |