如何使用Case when Then然后在Sql-Server中选择语句

时间:2016-10-06 07:40:05

标签: sql-server

任何人都可以帮助我在当时使用案例来写这个条件。

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 SubAppraisalID=@SubAppraisalID 
AND D.Attachment IS NULL
ORDER BY D.CreatedOn DESC

2 个答案:

答案 0 :(得分:0)

两件事:

  • CASE WHEN应始终以END结尾(在最后WHEN之后,或在ELSE之后,如果有)。
  • CASE WHEN只能在每个WHEN之后返回一个值(如果存在,也会在ELSE之后返回)。不允许使用多个值。

因此,如果您希望5列依赖于相同的条件,那么您需要重复CASE WHEN子句5次(每列一次)...或者可能将条件放在其他位置,例如在WHERE子句中。

答案 1 :(得分: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