mssql 쿼리문 예제

avatar
| Uncategorized

Paul White는 성능 조정, 실행 계획 및 쿼리 최적화 를 전문으로 하는 독립적인 SQL Server 컨설턴트입니다. 누구든지 우리가 선택 문에서 사용하는 case 식에 코드가 있는 경우 아래를 변환 할 수 있습니까? 어느 시점에서든 어떤 WHERE 조건이 적용될지 확신할 수 없었고 둘 이상의 조건도 쿼리에 적용할 수 있습니다. 마지막으로 동적 쿼리를 사용했으며 성능이 매우 저하되었습니다. 동적 SQL에 대한 성능을 최적화하는 데 많은 시간을 할애할 수 있었지만 WHERE 절의 CASE 표현식을 더 나은 옵션으로 선택할 수 있었습니다. 위의 쿼리에는 benn.college_football_players 테이블의 모든 열과 CASE 문의 결과를 보여 줄 열이 표시됩니다. 거기에서 *를 집계로 바꾸고 GROUP BY 절을 추가할 수 있습니다. 다음 연습 문제 중 하나에 어려움을 겪고 있는 경우 이 프로세스를 시도해 보십시오. CASE 문을 집계와 결합하는 것은 처음에는 까다로울 수 있습니다. CASE 문이 포함된 쿼리를 먼저 작성하고 자체적으로 실행하는 것이 유용한 경우가 많습니다.

이전 예제를 사용 하 여 먼저 쓸 수 있습니다.: 사소한 해결 방법 (예: ELSE (SELECT MIN (1/0)) END), 하지만 이것은 온라인 책에서 위의 문장을 암기 하지 않은 많은 사람에 게 진짜 놀라움으로 온다. 나는 먼저 이직 벤 간 (@ItzikBenGan)에 의해 개인 전자 메일 메일 메일 목록에서 대화에서이 특정 시나리오를 알게되었다, 누가 차례로 처음에 제이미 라파그에 의해 통보되었다. 나는 연결 #690017 버그를보고 : 케이스 / COALESCE는 항상 텍스트 순서로 평가하지 않습니다; 그것은 신속하게 “디자인에 의해”로 폐쇄되었다. 폴 화이트 (블로그 | @SQL_Kiwi) 이후 연결 #691535 출원 : 집계는 사건의 의미체계를 따르지 않아, 그것은 “고정”으로 폐쇄되었다. 이 경우 수정 프로그램은 온라인 도서 문서에서 명확히 설명되었습니다. 즉, 위에서 복사한 스니펫입니다. 잘하면 케이스 내부의 집계 함수가 먼저 평가됩니다 – 당신이 기대하는 다른 어떤 woud? 단락을 원하는 경우 이 경우 쓰기만 하면 @variable 두 번 평가됩니다(이 Connect 항목에 설명된 대로 함수 또는 하위 쿼리). 스위치(TypeEmp){ 케이스 0: if(나이 =0) || (소득 <=1880000)) { amnt = 소득 * 52 ; } else if(기타 조건){가 amnt를 계산합니다. } 휴식; }이 예제에서는 두 개의 열만 표시 하 고 조건에 값이 있는지 여부에 따라 동적 SQL 같은 쿼리를 작성하는 방법을 보여 줍니다.