SQL Group by 后 取出所有字段问题

weixin_41831497 2018-03-28 02:39:56
SQL Group by 后 取出所有字段问题

表:
c1 c2 c3
1 1 1
1 2 2
1 3 3
2 1 4
2 2 5
3 1 6
3 2 7


结果:
c1 c2 c3
1 1 1
2 1 3
3 1 6

思路: 将表中C2列最小值的行 通过C1分组,然后取出所有字段。

求大神指导




...全文
2188 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_41831497 2018-04-02
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
c3结果是不是 1,4,6?
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([c1] int,[c2] int,[c3] int)
Insert #T
select 1,1,1 union all
select 1,2,2 union all
select 1,3,3 union all
select 2,1,4 union all
select 2,2,5 union all
select 3,1,6 union all
select 3,2,7
Go
--测试数据结束
SELECT  c1,c2,c3
FROM    ( SELECT    * ,
                    ROW_NUMBER() OVER ( PARTITION BY c1 ORDER BY c2 ) AS rn
          FROM      #T
        ) t
WHERE   rn = 1
这个可以 可惜到LINQ后很麻烦···
二月十六 2018-03-28
  • 打赏
  • 举报
回复
c3结果是不是 1,4,6?
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([c1] int,[c2] int,[c3] int)
Insert #T
select 1,1,1 union all
select 1,2,2 union all
select 1,3,3 union all
select 2,1,4 union all
select 2,2,5 union all
select 3,1,6 union all
select 3,2,7
Go
--测试数据结束
SELECT c1,c2,c3
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY c1 ORDER BY c2 ) AS rn
FROM #T
) t
WHERE rn = 1


662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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