programing

Select 스테이트먼트의 케이스

minimums 2023. 4. 8. 08:17
반응형

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스테이트먼트, 심플CASEexpression에서는 동등성 검사만 허용되며 다른 비교는 수행되지 않습니다.다음 예제에서는 를 사용합니다.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검색된 스테이트먼트CASEexpression을 사용하면 비교 값에 따라 결과 집합에서 값을 대체할 수 있습니다.다음 예제에서는 제품의 가격 범위를 기준으로 정가를 텍스트 주석으로 표시합니다.

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; 

「」를 사용합니다.CASEin 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

반응형