CASE语法。
SELECT
ID,
CASE
WHEN ID != 2 THEN 'Others'
ELSE ColorName
END AS Name
FROM ColorTable
这给了我以下结果:
ID - Name
1 - Others
2 - Red
3 - Others
4 - Others
我的要求是将'其他'增加一个值:
ID - Name
1 - (1)Others
2 - Red
3 - (2)Others
4 - (3)Others
我尝试过以下代码,但失败了:
DECLARE @Count INT = 1
SELECT
ID,
CASE
WHEN ID != 2 THEN '(' + CONVERT(varchar(10), @Count) + ')Others' SET @Count = @Count + 1
ELSE ColorName
END AS Name
FROM ColorTable
有什么建议吗?它将如何产生这样的结果?
答案 0 :(得分:3)
虽然我同意您应该在表示层中执行此操作,但您可以使用ROW_NUMBER执行此操作:
SELECT
CASE WHEN ID = 2
THEN ColorName
ELSE '(' + CAST(
ROW_NUMBER() OVER
(
PARTITION BY CASE WHEN ID = 2 THEN 0 ELSE 1 END
ORDER BY ID
) AS varchar) + ')Others'
END AS Name
FROM ColorTable
ORDER BY ID