首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Case when rowcount

Case when rowcount
EN

Stack Overflow用户
提问于 2015-01-16 22:23:27
回答 3查看 3.3K关注 0票数 0
代码语言:javascript
复制
 SELECT distinct ID from table

结果

代码语言:javascript
复制
    Letter
1   A
2   B

当结果如上时,如何使select显示以下内容:

我的想法是什么,但还没有起作用:

代码语言:javascript
复制
SELECT CASE WHEN @@ROWCOUNT(ID) = 2 THEN 'AB'
ELSE ID END AS ID
FROM table

结果将是

代码语言:javascript
复制
     Letter
1    AB
EN

回答 3

Stack Overflow用户

发布于 2015-01-16 22:28:18

尝试:

代码语言:javascript
复制
Select
  CASE WHEN (ROW_NUMBER() OVER (ORDER BY [ID])) = 2 THEN 'AB'
  ELSE [ID] END AS [ID]
FROM table
group by
  [ID]

仅当ID和'AB‘是相同的数据类型时,上面的内容才有效。如果不是,则需要在ELSE语句中将ID强制转换为varchar。应该是:ELSE cast([ID] as varchar(8)) END AS [ID]

票数 1
EN

Stack Overflow用户

发布于 2015-01-16 22:29:44

你的需求真的不清楚。

基于各种假设,这可能会给你想要的东西。

代码语言:javascript
复制
SELECT Count(*) OVER (PARTITION BY 937)
     , CASE WHEN Count(*) OVER (PARTITION BY 937) = 2 THEN
         'AB'
       ELSE
         id
       END As id
     , id
FROM   your_table
票数 1
EN

Stack Overflow用户

发布于 2015-01-16 22:29:18

我不确定你想要实现什么。但在我看来,这就是你正在尝试的..

Declare一个变量,用Distinct Count of ID对它进行initialize,并在select中使用它

代码语言:javascript
复制
Declare @cnt int

SELECT @cnt=count(distinct ID) from table

SELECT CASE WHEN @cnt = 2 THEN 'AB'
ELSE ID END AS ID
FROM table
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27986021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档