计算详细记录并显示在sql server的新列中

埃伦·加尔达里亚(Hiren gardhariya)

我正在使用sql server 2008,在其中遇到一些麻烦,我找不到一列

TblMaster 
  ID      Name      City     
  1       Hiren     Juanagadh
  2       Ashish    Gandhinagar
  2       Mayur     Ahmedabad
  3       Hitesh    Junagadh
  4       Nipun     Ahmedabad
  4       Vivek     Rajkot
  4       Samir     Surat
  5       Sagar     Vadodara

现在我想要Anoter列CountId,所以我想要如下所示的输出

TblMaster 
  ID      Name      City           CountId 
  1       Hiren     Juanagadh       0
  2       Ashish    Gandhinagar     2
  2       Mayur     Ahmedabad       2
  3       Hitesh    Junagadh        0
  4       Nipun     Ahmedabad       3
  4       Vivek     Rajkot          3
  4       Samir     Surat           3
  5       Sagar     Vadodara        0

表示如果Id列仅一个,则CountId = 0如果Id列大于一,则CountId = Idcolumn的计数

迪玛森

准备表

declare @T table ( 
           id int, 
           Name nvarchar(6), 
           City nvarchar(20))

insert @T values 
(  1 ,      'Hiren',     'Juanagadh'),
(  2 ,      'Ashish',    'Gandhinagar'),
(  2 ,      'Mayur',     'Ahmedabad'),
(  3 ,      'Hitesh',    'Junagadh'),
(  4 ,      'Nipun',     'Ahmedabad'),
(  4 ,      'Vivek',     'Rajkot'),
(  4 ,      'Samir',     'Surat'),
(  5 ,      'Sagar',     'Vadodara')

选择声明

没有1-> 0校正

SELECT *, CountID  = count(*) over (Partition by ID)
from @T

具有1-> 0校正

select id, Name,City,CountID =  case when CountID = 1 then 0 else CountID end
 from (
SELECT *, CountID  = count(*) over (Partition by ID)
from @T )

RES

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章