Sql server 统计详细记录并在sql server的新列中显示
我使用的是SQLServer2008,其中有一些问题,我找不到一列Sql server 统计详细记录并在sql server的新列中显示,sql-server,sql-server-2008,sql-server-2008-r2,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2008 R2,Sql Server 2012,我使用的是SQLServer2008,其中有一些问题,我找不到一列 TblMaster ID Name City 1 Hiren Juanagadh 2 Ashish Gandhinagar 2 Mayur Ahmedabad 3 Hitesh Junagadh 4 Nipun Ahmedabad 4 Vivek Rajk
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
现在我需要另一列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的计数尝试以下查询:
select *,(case when (select count(id) from TblMaster )=1
then 0 else (select count(id) from TblMaster) end) as count
from tblmaster
备桌
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')
Select语句
无1->0修正
SELECT *, CountID = count(*) over (Partition by ID)
from @T
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
带1->0修正
SELECT *, CountID = count(*) over (Partition by ID)
from @T
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