[SQL] Select 문에서 케이스
SQLSelect 문에서 케이스
나는 SELECT에서 CASE이있는 SQL 문을하고 난 바로 그것을 얻을 수 없습니다. 사건이 조건은 결과이 경우 어디에서 너희들은 나에게 사례의 예를 표시 할 수 있습니다. 예를 들면 :
Select xxx, yyy
case : desc case when bbb then 'blackberry';
when sss then 'samsung';
end
from (select ???? .....
여기서 결과가 보여
name age handphone
xxx1 yyy1 blackberry
xxx2 yyy2 blackberry
해결법
-
==============================
1.MSDN의 구문 및 사용에 관한 질문의이 유형에 대한 좋은 참조입니다. 이것은 SQL 트랜잭션 참조에서입니다 - CASE 페이지를 참조하십시오.
MSDN의 구문 및 사용에 관한 질문의이 유형에 대한 좋은 참조입니다. 이것은 SQL 트랜잭션 참조에서입니다 - CASE 페이지를 참조하십시오.
http://msdn.microsoft.com/en-us/library/ms181765.aspx
USE AdventureWorks2012; GO SELECT ProductNumber, Name, "Price Range" = CASE WHEN ListPrice = 0 THEN 'Mfg item - not for resale' WHEN ListPrice < 50 THEN 'Under $50' WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END FROM Production.Product ORDER BY ProductNumber ; GO
당신은 SQL Server를 사용하는 경우 당신이 체크 아웃 할 수 있습니다 또 다른 좋은 사이트는 SQL Server 중앙이다. 이것은 당신이 배우고 싶은 SQL 서버의 어떤 영역에 대한 가능한 자원의 큰 다양성이있다.
-
==============================
2.나는이 당신을 위해 도움이 될 수 있다고 생각.
나는이 당신을 위해 도움이 될 수 있다고 생각.
간단한 CASE 식으로 SELECT 문을 사용하여
SELECT 문 내에서 단순 CASE 식은 동등성 만 확인이 가능; 다른 비교는 이루어지지 않습니다. 다음의 예는 그들을 더 이해할 수 있도록 제품 라인 범주의 표시를 변경하려면 CASE 식을 사용합니다.
USE AdventureWorks2012; GO SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale' END, Name FROM Production.Product ORDER BY ProductNumber; GO
A는 CASE 표현식 검색과 SELECT 문을 사용하여
SELECT 문 내에서 값이 비교 값에 따라 결과 집합의 교체에 대한 CASE 표현식이 허용 검색. 다음은 제품에 대한 가격 범위를 기반으로 텍스트 주석으로 공시 가격을 표시합니다.
USE AdventureWorks2012; GO SELECT ProductNumber, Name, "Price Range" = CASE WHEN ListPrice = 0 THEN 'Mfg item - not for resale' WHEN ListPrice < 50 THEN 'Under $50' WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END FROM Production.Product ORDER BY ProductNumber ; GO
ORDER BY 절에 CASE 사용
하기 실시 예는 소정의 열 값에 기초하여 행의 정렬 순서를 결정하는 ORDER BY 절로 CASE 식을 사용한다. 첫번째 예에서, HumanResources.Employee 테이블의 SalariedFlag 열에있는 값을 평가한다. 1에 SalariedFlag가 설정되어 직원은 내림차순으로 BusinessEntityID 순서로 반환됩니다. SalariedFlag 0으로 설정되어 직원 승순 BusinessEntityID 순서로 복귀된다. 열 CountryRegionName 다른 모든 행에 대해 '미국의 같고 CountryRegionName 의해 때 두 번째 예에서, 상기 결과 집합은 열 TerritoryName으로 정렬된다.
SELECT BusinessEntityID, SalariedFlag FROM HumanResources.Employee ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC ,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END; GO SELECT BusinessEntityID, LastName, TerritoryName, CountryRegionName FROM Sales.vSalesPerson WHERE TerritoryName IS NOT NULL ORDER BY CASE CountryRegionName WHEN 'United States' THEN TerritoryName ELSE CountryRegionName END;
UPDATE 문에 CASE 사용
다음 예는 음의 값 VacationHours 결과에서 10 시간 감산하면 VacationHours 40 시간 증가 0 SalariedFlag 세트 직원 열 VacationHours에 설정되는 값을 결정하기위한 UPDATE 문에 CASE 식을 사용; 그렇지 VacationHours 20 시간으로 증가된다. OUTPUT 절은 전에 휴가 값 후에 표시하는 데 사용됩니다.
USE AdventureWorks2012; GO UPDATE HumanResources.Employee SET VacationHours = ( CASE WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40 ELSE (VacationHours + 20.00) END ) OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue, Inserted.VacationHours AS AfterValue WHERE SalariedFlag = 0;
HAVING 절에 CASE 사용
다음은 SELECT 문에 의해 반환되는 행을 제한하는 HAVING 절에 CASE 식을 사용합니다. 성명은 HumanResources.Employee 테이블의 각 직책에 대한 최대 시간당 요금을 반환합니다. HAVING 절은 42 달러보다 최대 지불 속도보다 40 달러 나 여성보다 최대 지불 속도보다 남성에 의해 개최되는 사람들에게 타이틀을 제한합니다.
USE AdventureWorks2012; GO SELECT JobTitle, MAX(ph1.Rate)AS MaximumRate FROM HumanResources.Employee AS e JOIN HumanResources.EmployeePayHistory AS ph1 ON e.BusinessEntityID = ph1.BusinessEntityID GROUP BY JobTitle HAVING (MAX(CASE WHEN Gender = 'M' THEN ph1.Rate ELSE NULL END) > 40.00 OR MAX(CASE WHEN Gender = 'F' THEN ph1.Rate ELSE NULL END) > 42.00) ORDER BY MaximumRate DESC;
이러한 예의 자세한 설명에 대한 소스를 방문하십시오.
또한 좋은 정보와 함께 몇 가지 예는 여기와 여기에 방문한다.
-
==============================
3.당신은 또한 사용할 수 있습니다 :
당신은 또한 사용할 수 있습니다 :
SELECT CASE WHEN upper(t.name) like 'P%' THEN 'productive' WHEN upper(t.name) like 'T%' THEN 'test' WHEN upper(t.name) like 'D%' THEN 'development' ELSE 'unknown' END as type FROM table t
from https://stackoverflow.com/questions/14189216/case-in-select-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버에서 지난 달의 레코드를 가져 오기 (0) | 2020.04.13 |
---|---|
[SQL] 테이블의 열 수를 찾기 (0) | 2020.04.13 |
[SQL] 쿼리 SQLite는 반경에 따라 기록을 얻으려면? (0) | 2020.04.13 |
[SQL] 사실, 그렇지 않은 경우 MySQL의 1050 오류 "테이블이 이미 존재합니다" (0) | 2020.04.13 |
[SQL] () 일일 지금 MYSQL (0) | 2020.04.13 |