SQL 查询,如何使count(*)结果集第一列有查询结果值,后面几列设为0

gandie 2020-04-08 11:44:10
如图,经常使用count的人都知道,select的结果要是某列有不同的值就会产生n行数据,如果有相同的值那该列会产生一整列都是同一个值,我现在有个小需求,想把这个相同的值只显示到第一行的数据上:

代码片断:

...全文
500 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2021-03-27
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('dbo.[t]') IS NOT NULL 
	DROP TABLE dbo.[t]
GO
CREATE TABLE dbo.[t](
[id] INT
,[name] NVARCHAR(10)	
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[t] VALUES(N'1',N'小明')
INSERT INTO dbo.[t] VALUES(N'2',N'小红')
INSERT INTO dbo.[t] VALUES(N'3',N'小王')
-------- 以上为测试表及测试数据 --------

;WITH cte AS (
	SELECT *,ROW_NUMBER() OVER (ORDER BY id) AS rid
	FROM t
)
SELECT id,[name],CASE WHEN rid=1 THEN (SELECT MAX(rid) FROM cte) ELSE 0 END AS [count]  
FROM cte
/*
id	name	count
1	小明	3
2	小红	0
3	小王	0
*/
超哥哥哇 2021-03-26
  • 打赏
  • 举报
回复
select count(*) ,1,2,3,4......................from table 不就完事了吗
  • 打赏
  • 举报
回复
数据量不大, 取出来之后在DataTable里面 直接循环改也可以

gandie 2020-04-08
  • 打赏
  • 举报
回复
这样写可以了: 我用个分支把条件分开写
u014480075 2020-04-08
  • 打赏
  • 举报
回复
第一行count后 union下呗

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧