rowcount时的情况

时间:2015-01-16 14:23:27

标签: sql tsql case rowcount

 SELECT distinct ID from table

结果

    Letter
1   A
2   B

如果结果如上所示,如何使选择显示以下内容:

我在想什么但还没有工作:

SELECT CASE WHEN @@ROWCOUNT(ID) = 2 THEN 'AB'
ELSE ID END AS ID
FROM table

结果将是

     Letter
1    AB

3 个答案:

答案 0 :(得分:1)

尝试:

Select
  CASE WHEN (ROW_NUMBER() OVER (ORDER BY [ID])) = 2 THEN 'AB'
  ELSE [ID] END AS [ID]
FROM table
group by
  [ID]

如果[ID]和“AB”是相同的数据类型,上述内容也将起作用。如果没有,那么您需要将[ID]转换为ELSE语句中的varchar。那就是:ELSE cast([ID] as varchar(8)) END AS [ID]

答案 1 :(得分:1)

您的要求确实不清楚。

根据各种假设,可能会为您提供所需的内容。

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

答案 2 :(得分:0)

我不确定你想要达到的目标。但对我而言,这看起来就像你正在尝试的那样......

Declare变量initialize Distinct Count ID select并在Declare @cnt int SELECT @cnt=count(distinct ID) from table SELECT CASE WHEN @cnt = 2 THEN 'AB' ELSE ID END AS ID FROM table 中使用

{{1}}