2016-10-06 5 views
0

그 때의 경우를 사용하여이 조건을 작성하는 사람이 누구든지 나를 도울 수 있습니까?사용 방법 Case when Then SQL 서버에서 Select 문

SELECT CASE 
WHEN D.AppEmployeeID = D.ByEmployeeID AND D.CommentStatus = 'A' THEN D.CreatedOn, E.FirstName, E.LastName, D.Remarks, D.Attachment 
WHEN D.AppEmployeeID <> D.ByEmployeeID AND D.CommentStatus = 'R' THEN D.CreatedOn, E.FirstName, E.LastName, D.Remarks, D.Attachment 
FROM tbl_Conversation_History D 
INNER JOIN tbl_Employee_Master E on D.ByEmployeeID = E.EmployeeID 
WHERE D.AppEmployeeID = @EmployeeID AND D.ByEmployeeID IN (@EmployeeID, @ReportingMg, @DelegatedMgr) AND [email protected] 
AND D.Attachment IS NULL 
ORDER BY D.CreatedOn DESC 
+1

'IF'를 사용하지 않는 이유는 무엇입니까? – AakashM

+4

'CASE'는 * 표현식 *입니다. 스칼라 값을 반환해야합니다. 문/분석 트리의 임의의 (일부)가 아닙니다. 지금까지 내가 볼 수있는 한 똑같은 열을 'THEN'이 모두 나열했기 때문에 여기서 무엇을하려고하는지 명확하지 않습니다. 'WHEN'도 사실이 아니라면 어떤 일이 일어날 지 예상 할 수 없습니다. 쿼리 결과 세트의 "모양"(열 수, 이름 및 유형)을 변경할 수 없습니다. 지금은 0-5 열을 반환하는 쿼리를 작성하려고 시도하는 것처럼 보입니다.이 결정은 행별로 다릅니다. 이는 의미가 없습니다. –

+1

또한 'then'명령문은 모두 –

답변

0

두 가지 :

  • CASE WHEN

    항상 (마지막 WHEN 후, 또는 ELSE 후에있는 경우) END로 끝나야합니다.
  • CASE WHEN은 각각 WHEN (및 또한 ELSE 이후) 하나의 값만 반환 할 수 있습니다. 여러 값은 허용되지 않습니다.

그래서 당신은 5 열은 그 같은 조건에 의존하려는 경우, 당신은 (각 열에 대해 한 번)을 CASE WHEN 절을 5 번 반복해야합니다 ... 혹은 다른 곳, 예를 조건을 넣어 WHERE 절에.

0

테이블 구조가 확실하지 않습니다. 내 이해에 따라 쿼리에 END 문이 누락되었습니다. 예를 들어, CASE WHEN 문을 사용하는 방법에 대한 아래 쿼리를 살펴보십시오.

CREATE TABLE tempTable(Id int, Price int) 

INSERT INTO tempTable VALUES(1,500) 
INSERT INTO tempTable VALUES(1,1500) 
INSERT INTO tempTable VALUES(1,2500) 
INSERT INTO tempTable VALUES(1,3500) 

SELECT 
CASE 
WHEN Price > 2000 THEN 'Over Priced' 
WHEN Price > 1000 THEN 'Perfectly Priced' 
ELSE 'Offer' 
END as PriceRange 
FROM tempTable