Select 스테이트먼트의 케이스
이 SQL 문에는 다음과 같이 되어 있습니다.CASE
부터SELECT
제대로 못 맞혀요의 예를 들어주시겠습니까?CASE
여기서 케이스는 조건이고 결과는 케이스에서 나온 것이다.예를 들어 다음과 같습니다.
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
MSDN은 구문 및 사용법에 관한 이러한 유형의 질문에 대한 참고 자료입니다.이것은 Transact SQL Reference - 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 Central입니다.배우고 싶은 SQL Server의 모든 영역에 대해 다양한 리소스를 사용할 수 있습니다.
이것들이 당신에게 도움이 될 수 있을 것 같아요.
사용방법SELECT
간단한 진술CASE
표현
A의 범위SELECT
스테이트먼트, 심플CASE
expression에서는 동등성 검사만 허용되며 다른 비교는 수행되지 않습니다.다음 예제에서는 를 사용합니다.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
사용방법SELECT
검색된 진술CASE
표현
A의 범위SELECT
검색된 스테이트먼트CASE
expression을 사용하면 비교 값에 따라 결과 집합에서 값을 대체할 수 있습니다.다음 예제에서는 제품의 가격 범위를 기준으로 정가를 텍스트 주석으로 표시합니다.
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
사용.CASE
에 있어서ORDER BY
조문
다음 예제에서는 를 사용합니다.CASE
의 표현ORDER BY
지정된 열 값을 기준으로 행의 정렬 순서를 결정하는 절입니다.첫 번째 예에서는 HumanResources의 SalariedFlag 열에 있는 값입니다.직원 테이블이 평가됩니다.SalariedFlag가 1로 설정된 직원은 BusinessEntity에 의해 순서대로 반환됩니다.내림차순으로 된 아이디SalariedFlag가 0으로 설정된 직원은 BusinessEntity에 의해 순서대로 반환됩니다.오름차순 아이디두 번째 예에서는 CountryRegionName 열이 'United States'일 때 결과 세트의 순서가 TerritoryName 열로 지정되고 다른 모든 행에 대해 CountryRegionName 순으로 지정됩니다.
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;
사용.CASE
에 있어서UPDATE
진술
다음 예제에서는 를 사용합니다.CASE
의 표현UPDATE
휴가 열에 대해 설정된 값을 결정하는 문장SalariedFlag가 0으로 설정된 직원의 시간.휴가에서 10시간을 뺄 때시간이 음수 값이 됩니다(휴가).근무시간이 40시간 늘어납니다.그렇지 않으면 휴가입니다.시간이 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;
「」를 사용합니다.CASE
in a a a a HAVING
삭제
에서는 '먹다'를 하고 있습니다.CASE
HAVING
에 되는 행을 SELECT
내의 각 합니다.Human Resources 이resres 、 Human Resources 、 Human Resources 、 Human Resources 、 Human Resources 。★★★★★★★HAVING
이 조항은 최고 급여율이 40달러 이상인 남성이나 최고 급여율이 42달러 이상인 여성으로 칭호를 제한한다.
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;
이러한 예에 대한 자세한 내용은 소스를 참조하십시오.
다음 항목도 사용할 수 있습니다.
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
언급URL : https://stackoverflow.com/questions/14189216/case-in-select-statement
'programing' 카테고리의 다른 글
HTML에 minlength validation 속성이 있습니까? (0) | 2023.04.08 |
---|---|
ASP에서 여러 개의 제출 버튼을 처리하는 방법은 무엇입니까?NET MVC 프레임워크? (0) | 2023.04.08 |
HTML 입력="file" 특성 파일 형식 수락(CSV) (0) | 2023.04.08 |
MSSQL 오류 '기본 공급자가 열 때 실패했습니다.' (0) | 2023.04.08 |
계속하려면 아무 키나 누르십시오. (0) | 2023.04.08 |