请问如何查询有多少个ID有不同值?

mannxp 2018-01-29 03:03:56
查询要求如图:

如何查出有多个借书日期的人的姓名?

比如表中的:李四 和 马六
...全文
386 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-01-31
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([姓名] nvarchar(22),[结束日期] Date)
Insert #T
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'李四','2017-10-05' union all
select N'李四','2017-11-06' union all
select N'王五','2018-1-5' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-20'
Go
--测试数据结束
SELECT 姓名 ,
COUNT(DISTINCT 结束日期) AS 天数
FROM #T
GROUP BY 姓名
HAVING COUNT(DISTINCT 结束日期) > 1


mannxp 2018-01-31
  • 打赏
  • 举报
回复
效果很好!谢谢!@二月十六
追问一下:
还想继续查出每个人的借书天数有几天(只统计大于1天的人),想要的结果如下(如图),应如何查询。

引用 1 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([姓名] nvarchar(22),[结束日期] Date)
Insert #T
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'李四','2017-10-05' union all
select N'李四','2017-11-06' union all
select N'王五','2018-1-5' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-20'
Go
--测试数据结束
Select 姓名 from #T GROUP BY 姓名 HAVING COUNT(DISTINCT 结束日期)>1


五维思考 2018-01-29
  • 打赏
  • 举报
回复
这都能整出答案来,服了,我愣是没看懂
吉普赛的歌 2018-01-29
  • 打赏
  • 举报
回复
--借#1数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([姓名] nvarchar(22),[结束日期] Date)
Insert #T
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'李四','2017-10-05' union all
select N'李四','2017-11-06' union all
select N'王五','2018-1-5' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-20'
GO
SELECT DISTINCT 姓名 
FROM #t a 
WHERE EXISTS(
	SELECT 1 FROM #t b WHERE a.姓名=b.姓名
	AND a.结束日期!=b.结束日期 	
)
/*
姓名
李四
马六
*/
二月十六 2018-01-29
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([姓名] nvarchar(22),[结束日期] Date)
Insert #T
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'张三','2017-10-02' union all
select N'李四','2017-10-05' union all
select N'李四','2017-11-06' union all
select N'王五','2018-1-5' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-10' union all
select N'马六','2017-1-20'
Go
--测试数据结束
Select 姓名 from #T GROUP BY 姓名 HAVING COUNT(DISTINCT 结束日期)>1


22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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